Re: [問題] 不定長度的byte陣列該怎麼放?
※ 引述《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.
雖然我覺得那個影響效能很小..
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.46.230
※ 文章網址: https://www.ptt.cc/bbs/java/M.1435038148.A.469.html
推
06/23 13:52, , 1F
06/23 13:52, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章