Re: [問題] 不定長度的byte陣列該怎麼放?

作者: popcorny (畢業了..@@")   2015-06-23 13:42:26
※ 引述《LaPass (LaPass)》之銘言:
: 需要針對byte陣列做運算
: 要作的動作很簡單
: 1.把所有的0x01替換成0x0101
: 2.把所有的0x00替換成0x01
: 我打算用個迴圈去處理
: 由於在算完前不知道生成的byte的陣列長度
: 所以大概需要一個像是StringBuilder之類的東西來放生成到一半的byte
: 請問該用什麼樣的容器物件去放比較好?
: 我直覺上會用 ArrayList<Byte>
: 但怕boxing unbox影響效能
1. 繼承FilterOutputStream
把write method改寫,加上你的byte轉換邏輯
2. ByteArrayOutputStream bout = new ByteArrayOutputStream();
YourFilterOutputStream out = new YourFilterOutputStream(bout);
// out.write(xxx)
// out.write(xxx)
Bytes[] result = bout.toByteArray();
用java8 Stream也可以
但是一個是pull (java8 Stream)
一個是push (java.io.OutputStream)
因為你說想要類似StreamBuffer
那就用OutputStream的用法..
還有用OutputStream也不會有Boxing/Unboxing的overhead.
雖然我覺得那個影響效能很小..
作者: LaPass (LaPass)   2015-06-23 13:52:00
感謝

Links booklink

Contact Us: admin [ a t ] ucptt.com