看板 java 關於我們 聯絡資訊
※ 引述《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
LaPass: 感謝 06/23 13:52