创建列表和同时插入值与分两步进行插入有什么区别?

时间:2019-07-06 06:20:38

标签: java arraylist

我正在尝试使用pre[1]将值List <Integer> list = new ArrayList(pre[1]);赋予新列表,但是我得到了一个空列表。

当我将其分为两个步骤时:首先创建一个空的list1,然后将pre[1]添加到我的list1中,它可以正常工作:list1包含2

谁能告诉我为什么? 我期待着同样的结果。

我当时以为List <Integer> list = new ArrayList(pre[1]);正在创建一个列表,并将值初始化为pre[1],但没有用,这是什么问题?

int[] pre =new int []{1,2,3};
List <Integer> list = new  ArrayList(pre[1]);

List <Integer> list1 = new  ArrayList();
list1.add(pre[1]);

2 个答案:

答案 0 :(得分:3)

请阅读the documentation of ArrayList's constructors

TL; DR:没有构造函数接收初始化的ArrayList应该包含的新元素。
您要调用的构造函数是the one that receives an integer as argument,它的容量是根据参数(即pre[1]2)定义的。

答案 1 :(得分:0)

ArrayList的构造函数接收initialCapacity而不是元素。 因此,根据您的情况,您正在使用initialCapacity 2(即pre [1])创建List。

public ArrayList(int initialCapacity)

您可能想在Java9中尝试List.of

List.of(pre[1], pre[2]);