※ 引述《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.
虽然我觉得那个影响效能很小..