作者popcorny (毕业了..@@")
看板java
标题Re: [问题] 不定长度的byte阵列该怎麽放?
时间Tue Jun 23 13:42:26 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/java/M.1435038148.A.469.html
1F:推 LaPass: 感谢 06/23 13:52