为什么ArrayList不使用运行时输入初始化?

时间:2019-07-18 05:31:38

标签: java

我目前正在使用Java Collection Framework,并创建了一个大小为10的列表,但程序仍然提示我列表大小为0,如果列表处理后,当然会抛出IndexOfBoundException < / p>

我已经搜索过这个,但是我不知道为什么会这样

    int size =sc.nextInt();
    List<Integer> list = new ArrayList<Integer>(size);   
    System.out.println(list+" "+list.size());

我希望输出为[0,0,0,0,0,0,0,0,0,0,0] 10,但输出为[] 0。

4 个答案:

答案 0 :(得分:1)

看看文档,它说创建了具有指定容量的空列表。

public ArrayList(int initialCapacity)
  

使用指定的初始容量构造一个空列表。

此功能是什么,为什么有用?

  

每个ArrayList实例都有一个容量。容量是用于在列表中存储元素的数组的大小。它总是至少与列表大小一样大。将元素添加到ArrayList后,其容量会自动增长。除了添加元素具有固定的摊销时间成本这一事实外,没有指定增长策略的详细信息。

答案 1 :(得分:1)

要将false初始化为具有默认值的给定大小,可以使用List

nCopies

现在您的List<Integer> list = new ArrayList<>(Collections.nCopies(size,0)); 语句将输出:

println

(假设[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 10 size)。

答案 2 :(得分:0)

该参数初始化一个具有特定容量的内部数组(如果没有给出参数,默认值实际上已经是10)

您必须循环使用值填充列表,并且列表的外部集合从大小0开始

答案 3 :(得分:0)

 List<Integer> list = new ArrayList<Integer>()
    {   
        {
             for (int i = 0; i < size; i++) {
                 add(0);
             }   
        }
    };
    System.out.println(list+" "+list.size());

现在我们可以拥有适当大小的List并用0初始化。