基本类型的 Java List 泛型语法
我想制作一个可增长的字节数组。即一个列表。 在 c# 中,通常会执行以下语法,
List<byte> mylist = new List<byte>();
而在 java 中,此语法不起作用,我用谷歌搜索并找到了下面的代码,
List myList = new ArrayList();
但这不是我想要的。知道我哪里出错了吗?
I want to make a growable array of bytes. I.e a list.
In c# would usally do the following syntax
List<byte> mylist = new List<byte>();
where as in java this syntax does not work and I have googled around and found the below code
List myList = new ArrayList();
but that is not what I want. Any idea's where I am going wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您还可以使用 TByteArrayList ="http://trove4j.sourceforge.net/" rel="nofollow noreferrer">GNU Trove 库。
You could also use TByteArrayList from the GNU Trove library.
使用包装类
Byte
:然后,由于自动装箱,您仍然可以拥有:
Use the wrapper class
Byte
:Then, because of autoboxing, you can still have:
您有一个
字节
< /a> JRE 提供的类。该类是
byte
基元类型的对应类。有关基本类型,请参阅此处。
你可以这样做:
正如迈克尔在评论中指出的:
结果是:
You have a
Byte
class provided by the JRE.This class is the corresponding class for the
byte
primitive type.See here for primitive types.
You can do this :
As Michael pointed in the comments :
results in :
请注意,使用 ArrayList来存储可增长的字节数组可能不是一个好主意,因为每个字节都会被装箱,这意味着分配一个新的 Byte 对象。因此,每个字节的总内存成本是 ArrayList 中的一个指针 + 一个 Byte 对象。
使用 java.io.ByteArrayOutputStream 可能更好。其中,每字节的内存成本为 1 字节。
如果您多描述一下背景,我们可以提供更好的建议。
Note that using an
ArrayList<Byte>
to store a growable array of bytes is probably not a good idea, since each byte gets boxed, which means a new Byte object is allocated. So the total memory cost per byte is one pointer in the ArrayList + one Byte object.It's probably better to use a
java.io.ByteArrayOutputStream
. There, the memory cost per byte is 1 byte.We can provide better advice if you describe the context a little more.