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

看板java作者 (LaPass)時間10年前 (2015/06/23 11:05), 編輯推噓1(1010)
留言11則, 3人參與, 最新討論串1/2 (看更多)
需要針對byte陣列做運算 要作的動作很簡單 1.把所有的0x01替換成0x0101 2.把所有的0x00替換成0x01 我打算用個迴圈去處理 由於在算完前不知道生成的byte的陣列長度 所以大概需要一個像是StringBuilder之類的東西來放生成到一半的byte 請問該用什麼樣的容器物件去放比較好? 我直覺上會用 ArrayList<Byte> 但怕boxing unbox影響效能 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.87.115 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1435028724.A.5E2.html

06/23 11:26, , 1F
這個需求直接allocate兩倍長度的buffer就好了吧
06/23 11:26, 1F

06/23 11:28, , 2F
StringBuilder底層也只是滿了就重新allocate兩倍長度的
06/23 11:28, 2F

06/23 11:31, , 3F
buffer,沒什麼特別的
06/23 11:31, 3F

06/23 11:33, , 4F
如果要類似的,那就是 ByteArrayOutputStream
06/23 11:33, 4F

06/23 12:04, , 5F
用stream啊.....
06/23 12:04, 5F

06/23 12:05, , 6F
這需求很有趣 剛好stream或者java8的stream都能用
06/23 12:05, 6F

06/23 12:06, , 7F
"Processing Data with Java SE8 Streams" Oracle官方
06/23 12:06, 7F

06/23 12:06, , 8F
容器來講我會建議用ByteArrayOutputStream
06/23 12:06, 8F

06/23 12:07, , 9F
方法我會建議用Java 8的Stream XD
06/23 12:07, 9F

06/23 12:07, , 10F
(不過兩個沒辦法和在一起啦)
06/23 12:07, 10F

06/23 13:29, , 11F
了解,感謝建議
06/23 13:29, 11F
文章代碼(AID): #1LYCpqNY (java)
文章代碼(AID): #1LYCpqNY (java)