Java中的byte[]和List<Byte>有什么区别?

What is the difference between byte[] and List<Byte> in Java?

两者都可用于创建字节列表。但是它们有什么区别呢?

byte[] buffer;
List<Byte> buffer;
  • byte[] 数组有固定大小,而列表没有。
  • byte[]数组包含原始byte值,而列表包含盒装值,因此列表将需要更多内存

更多信息:

  • What's the difference between List and array?

Both can be used to create an array of bytes

不,第一个创建一个字节数组。第二个定义了一个 list 字节,它可能有也可能没有数组支持,具体取决于您使用的 List 实现。

数组是固定大小和预先分配的;如果需要增大数组,则需要创建一个 new,更大的数组,将内容复制过来,然后添加新内容。

另一方面,列表通常是动态的,随着您向其中添加内容而增长,随着您从其中删除内容而缩小,等等。一个列表实现 ArrayList 通过维护支持来做到这一点数组,通常有一些松弛,然后在添加到它时根据需要进行重新分配和复制。

另请注意,List 实际上不能包含原始 byte 值;相反,它将包含 Byte 个对象(通过称为自动装箱的过程)。

byte[] buffer 是一个 premitive 数组 byte 没有任何方法可以在 Byte[]
中进行 List<Byte> buffer 是 Byte 对象的列表对象,它也有在 Byte

中定义的方法