8

我在某处看到java.util.List定义如下。
List<String> myList = new ArrayList<String>(0);
谁能解释括号中的整数的作用以及如何使用它?谢谢。

4

6 回答 6

6

该参数决定了启动容量ArrayList

An 在ArrayList内部分配内存以保存一定数量的对象。当您添加更多元素时,它必须分配更多内存并将所有数据复制到新位置,这需要一些时间。因此,您可以指定要放入多少对象ArrayList以帮助 Java。
起始大小0可能表示程序员认为ArrayList将很少使用,因此无需为其开始分配内存。

[编辑]
澄清一下,正如@LuiggiMendoza 和@emory 在讨论中所说的那样,很难想到将其0用作初始容量的场景。在大多数情况下,默认构造函数工作得很好。

于 2012-07-13T04:57:45.767 回答
2

定义 ArrayList 的初始容量。

于 2012-07-13T04:55:41.060 回答
1

它是定义的初始容量ArrayList

如果需要,您不必传递大小参数,因为有一个构造函数也没有参数。

每当您添加一个附加元素时,如果列表大小不允许添加,List该类将List在 中创建另一个Heap更大的元素,并将旧的内容与附加元素一起复制array到它,删除旧的array

初始实例化的容量用于创建确切size的内容,这有助于通过创建新的、删除旧的和在运行时复制内容List来帮助不分配额外的内存块,这有助于提高性能。Lists

于 2012-07-13T06:15:21.600 回答
0

它指定列表的容量

于 2012-07-13T04:55:21.663 回答
0

不要与数组列表的大小及其容量混淆:

  • 大小是列表中元素的数量;
  • 容量是列表可以容纳多少元素而不重新分配其内部结构。

当您调用 时new ArrayList<String>(0),您正在设置列表的初始容量,而不是其大小。换句话说,当以这种方式构造时,数组列表开始它的生命是空的。

于 2012-07-13T05:07:06.910 回答
0

当用作

List<String> strList = new ArrayList<String>(5);

它构造一个具有指定初始容量的空列表。

默认情况下,未指定任何内容。

List<String> strList = new ArrayList<String>;

构造一个初始容量为 10 的空列表。

在这里阅读

不要将其误解为 ArrayList 的大小。

于 2012-07-13T05:08:03.987 回答