创建基元 int 的列表?

2022-08-31 08:34:56

有没有办法在java中创建原始int或任何原始内容的列表,如下所示?

List<int> myList = new ArrayList<int>();

看来我能做到List myList = new ArrayList();

并将“int”添加到此列表中。但这意味着我可以向这个列表中添加任何内容。

我唯一的选择是创建一个int数组并将其转换为列表还是创建Integer对象列表?


答案 1

在 Java 中,任何变量的类型要么是基元类型,要么是引用类型。泛型类型参数必须是引用类型。由于基元不扩展,因此它们不能用作参数化类型的泛型类型参数。Object

而是使用作为以下各项的包装器的类:Integerint

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

如果您使用 Java 7,则可以使用菱形运算符简化此声明:

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

在 Java 中使用自动装箱时,基元类型将在必要时成为 a。intInteger

自动装箱是 Java 编译器在基元类型及其相应的对象包装类之间进行的自动转换。

因此,以下内容是有效的:

int myInt = 1;
List<Integer> list = new ArrayList<Integer>();
list.add(myInt);

System.out.println(list.get(0)); //prints 1

答案 2

不,在使用 Java 集合框架时,没有任何集合可以包含基元类型。

但是,还有其他java集合支持基元类型,例如:TroveColtFastutilGuava

当使用 Trove 库时,具有 int 的数组列表的示例如下:

 TIntArrayList list= new TIntArrayList();

与 Java 集合中的整数 ArrayList 相比,此列表的性能要好得多,因为不需要自动装箱/取消装箱到相应的整数包装类。