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

看板java作者 (畢業了..@@")時間10年前 (2015/06/23 05:42), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1LYF74Hf (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1LYF74Hf (java)