eri*_*c.m 5 java bytebuffer arraylist
最近我创建了一个包装器来读取和写入数据到一个byte数组中。为此,我一直在使用ArrayList<Byte>,但我想知道这是否是最有效的方法,因为:
addAll()不适用于byte数组(即使使用Arrays.asList(),它返回 me List<Byte[]>)。为了修复它,我只是循环并byte在每个循环中添加一个,但我想这假设了很多函数调用,因此它具有性能成本。byte[]从ArrayList。我无法从Byte[]to投射byte[],所以我必须使用循环。我知道ByteArrayInputStream并且ByteArrayOutputStream可以用于此,但它有一些不便之处:
readInt,readLEInt、readUInt、 等),而这些类只能读取/写入字节或字节数组。这不是真正的问题,因为我可以在包装器中修复它。但是第二个问题来了。ByteArrayInputStream和ByteArrayOutputStream。我不知道这些是否可以以某种方式同步,或者我每次写入包装器时都必须将一个的整个数据写入另一个。所以,我的问题来了:使用 aByteBuffer会更有效吗?我知道您可以从中获取integers,floats等,甚至可以更改字节顺序。我想知道的是,使用 aByteBuffer和 a之间是否存在真正的性能变化ArrayList<Byte>。
肯定是ByteBuffer或ByteArrayOutputStream。在你的情况下ByteBuffer看起来不错。检查 Javadoc,因为它有很好的方法,对于 putInt/getInt 等,您可能需要设置顺序(这 4 个字节)
byteBuffer.order(ByteBuffer.LITTLE_ENDIAN);
Run Code Online (Sandbox Code Playgroud)
对于文件,您可以使用getChannel()或变体,然后使用MappedByteBuffer.
ByteBuffer 可以包装字节数组或分配字节数组。
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |