基本类型的 Java List 泛型语法

发布于 2024-08-22 10:59:27 字数 250 浏览 3 评论 0原文

我想制作一个可增长的字节数组。即一个列表。 在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

雪落纷纷 2024-08-29 10:59:27

您还可以使用 TByteArrayList ="http://trove4j.sourceforge.net/" rel="nofollow noreferrer">GNU Trove 库。

You could also use TByteArrayList from the GNU Trove library.

可是我不能没有你 2024-08-29 10:59:27

使用包装类 Byte

List<Byte> mylist = new ArrayList<Byte>();

然后,由于自动装箱,您仍然可以拥有:

for (byte b : mylist) {

}

Use the wrapper class Byte:

List<Byte> mylist = new ArrayList<Byte>();

Then, because of autoboxing, you can still have:

for (byte b : mylist) {

}
御守 2024-08-29 10:59:27

您有一个 字节< /a> JRE 提供的类。

该类是byte基元类型的对应类。

有关基本类型,请参阅此处

你可以这样做:

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)

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 :

List<Byte> myList = new ArrayList<Byte>();
byte b = 127;
myList.add(b);
b = 0; // resetting
b = myList.get(0); // => b = 127 again

As Michael pointed in the comments :

List<Byte> myList = new ArrayList<Byte>();
Byte b = null;
myList.add(b);
byte primitiveByte = myList.get(0);

results in :

Exception in thread "main" java.lang.NullPointerException
    at TestPrimitive.main(TestPrimitive.java:12)
木格 2024-08-29 10:59:27

请注意,使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文