gpt4 book ai didi

java - Java 列表中的数字

转载 作者:行者123 更新时间:2023-11-29 08:52:21 24 4
gpt4 key购买 nike

如何在 Java 列表中存储原始数字?当我尝试做的时候

List<double> list = new ArrayList<>();

编译器告诉我 double 不是一个对象。这些集合似乎不是为原始人制作的。我笨拙的解决方法如下:

List<Double> list = new ArrayList<>();

但是这样比较慢并且占用更多的内存。有更好的方法吗?

最佳答案

您不能在 Java 的集合中直接使用原语。这是 Java 中经过深思熟虑的设计决策(尽管有些人认为这是一个错误)。 Java 中的泛型是事后加固的,这就是它们在整个语言中的应用不统一的原因。

容器基本上需要对象类型,而原始类型不是从 Object 派生的(即,Object 与 Java 中的所有其他对象不同,不是它们的父类(super class))。从代码编写的角度来看,看起来确实没有包装器:

list.add(6); //list is of type List<Integer>
int num = list.get(i);

这是因为装箱和拆箱是自动为您完成的。在字节码级别,您实际拥有的是:

list.add(new Integer(6));
int num = ((Integer) list.get(i)).intValue();

因此,您拥有的第二个选项是 Java 中的正确方法。

如果你想要一个不那么需要内存的选项,你可以选择直接 double[] .但是,这意味着您将不得不编写代码来管理添加、检索、更新和删除操作。如果额外工作太多,您可以尝试使用 Apache Commons Primitives .

另外,我怀疑你的意思是 List<Double> list = new ArrayList<>(); (或其他一些实现),对吗?这是因为您所拥有的无法编译。

关于java - Java 列表中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22151932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com