byte数组合并

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:54:40
在循环中产生byte数组,要把循环产生所有byte数组合并为一个大的byte数组,有没有什么好的方法实现。
循环次数未知,所以最后合并后的byte数组长度未知。
while(true)
{
byte[] aa=new byte[100]
}
要求循环产生的byte数组合并成一个。谢谢!

另外有人建议用System.arraycopy() 。
但用arraycopy的话,每次循环内都会产生一个临时byte[],还要copy两次原来数组。如果有100次循环就要定义100次临时byte[],copy 200次。好像效率比较低啊。有没有更好的办法啊

java.io.ByteArrayOutputStream baos;
baos.write(byte[] data, int offset, int length);
baos.toByteArray();

其实他本身还是调用System.arraycopy(),但是通过巧妙的处理,使得没有200次那么多,具体可以查看JDK中自己带的源代码

把所有数据加到list里,最后循环一次list把数据赋值到byte数组里。

为什么不用ByteOutputStream ?