可以在初始化之后更改ArrayList的大小吗?

时间:2018-02-16 09:16:59

标签: java arraylist

在I级课程的练习测试中,有以下问题:

  

对错。初始化ArrayList后,无法更改ArrayList的大小。

立即查看问题,我认为答案是 false 。如果初始化ArrayList,则可以继续向其添加无限元素,ArrayList将自动调整大小。但是,答案密钥声称答案是 true 。为什么会这样?幕后是否有我不理解的事情?

编辑:导师告诉我答案键实际上是一个错误。谢谢你的帮助。

6 个答案:

答案 0 :(得分:6)

假。引用javadoc,它将数组列表解释为

  

List接口的可调整大小的数组实现。

此外,它还解释了

  

每个ArrayList实例都有一个容量。容量是大小   用于存储列表中元素的数组。它总是在   至少与列表大小一样大。随着元素被添加到   ArrayList,其容量自动增长。

此外,对于ArrayList,初始化时无法设置大小。但是可以设置初始容量。大小是列表中元素的数量。

答案 1 :(得分:1)

是。设置一个值只是一个初始长度。如果你试图将一个元素添加到" full"列表,它会增加大小。只有数组的大小是固定的。

编辑:

  

对错。之后无法更改ArrayList的大小   ArrayList已初始化。

这句话是错误的。通过添加更多元素可以轻松改变大小。

答案 2 :(得分:0)

请记住..涉及到两件事...... 容量和大小..

capacity表示列表可以包含多少个最大元素 容纳它,大小代表有多少元素 目前列在目录中..容量是自动的 增加一定数量(10,20,30 ......)的基础上 当大小等于容量时的当前大小..

如果您遇到问题,如果这是相关代码,则无法更改大小...(常见的Java问题)

public static void main(String[] args) {
        int []a = {1,2,3};
        List l = Arrays.asList(a);
        l.add(4); //error java.lang.UnsupportedOperationException
        System.out.println(l);

    }

答案 3 :(得分:0)

如果考虑到如果达到大小,则在ArrayList中创建新数组(以及复制到其中的旧数据的数据)这一事实可能是真的(以扭曲的方式)。但这就像是说,因为你更换了计算机中的一个部件,它就是一个新部件。

我相信你应该去问一个答案的解释。

答案 4 :(得分:0)

错误,当您添加或删除列表元素时,可以随时更改java中的Arraylist

答案 5 :(得分:0)

数组的大小不是动态的。它不会增长。

为了克服这个问题,Collections已经提出了这个功能。

ArrayList大小是动态的。如果我们用初始容量初始化它,它将创建一个具有相同容量的arraylist。如果代码增加的数量超过初始容量,则根据负载因子,大小会增加。

这是一个解释这个问题的例子:

public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<String> arr= new ArrayList<String>(2);
        arr.add("apple");
        arr.add("apple");
        arr.add("apple");
        System.out.println(arr);
    }

上述代码没有错误。它打印ArrayList。

控制台输出

[apple, apple, apple]

根据您的问题,当您初始化Arraylist [此处我将容量设为2]时,size为0(即arr.size()为0)但是如果在Arralylist分配了&#后打印大小34;苹果&#34;,大小为3。