为什么在ArrayList的括号内有一个Integer

时间:2012-07-13 04:53:32

标签: java arraylist integer parentheses

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

6 个答案:

答案 0 :(得分:5)

参数决定ArrayList的起始容量。

ArrayList在内部分配内存以容纳一定数量的对象。当你添加更多元素时,它必须分配更多内存并将所有数据复制到新位置,这需要一些时间。因此,您可以指定要在ArrayList中放置多少个对象来猜测Java 起始大小0可能表示程序员认为ArrayList很少会被使用,所以不需要为它开始分配内存。

<强> [编辑]
为了澄清,正如@LuiggiMendoza和@emory在讨论中所说的那样,很难想到使用0作为初始容量是有意义的场景。在大多数情况下,默认构造函数工作正常。

答案 1 :(得分:2)

定义ArrayList的初始容量。

答案 2 :(得分:1)

定义ArrayList的初始容量。

如果你愿意,你没有义务传递一个size参数,因为有一个构造函数也没有参数。

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

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

答案 3 :(得分:0)

它指定列表的容量

答案 4 :(得分:0)

请勿与数组列表的大小及其容量混淆:

  • 尺寸是列表中元素的数量;
  • 容量是列表可以容纳的元素数量,而无需重新分配其内部结构。

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

答案 5 :(得分:0)

用作

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

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

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

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

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

阅读Here

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