我想制作一个可增长的字节数组。我是一个清单。 在c#中,通常会使用以下语法
List<byte> mylist = new List<byte>();
在java中,这种语法不起作用,我已经google了一下,找到了下面的代码
List myList = new ArrayList();
但这不是我想要的。我知道哪里出错了?
答案 0 :(得分:6)
您也可以使用TByteArrayList中的GNU Trove library。
答案 1 :(得分:5)
使用包装器类Byte
:
List<Byte> mylist = new ArrayList<Byte>();
然后,由于自动装箱,您仍然可以:
for (byte b : mylist) {
}
答案 2 :(得分:3)
您有一个由JRE提供的Byte
课程。
此类是byte
基元类型的对应类。
有关原始类型,请参阅here。
你可以这样做:
List<Byte> myList = new ArrayList<Byte>();
byte b = 127;
myList.add(b);
b = 0; // resetting
b = myList.get(0); // => b = 127 again
迈克尔在评论中指出:
List<Byte> myList = new ArrayList<Byte>();
Byte b = null;
myList.add(b);
byte primitiveByte = myList.get(0);
结果:
Exception in thread "main" java.lang.NullPointerException
at TestPrimitive.main(TestPrimitive.java:12)
答案 3 :(得分:0)
请注意,使用ArrayList<Byte>
来存储可增长的字节数组可能不是一个好主意,因为每个字节都被装箱,这意味着分配了一个新的Byte对象。因此,每个字节的总内存开销是ArrayList +一个Byte对象中的一个指针。
使用java.io.ByteArrayOutputStream
可能更好。在那里,每字节的内存成本是1个字节。
如果您更多地描述上下文,我们可以提供更好的建议。