ArrayList构造和容量数组?

时间:2014-07-16 09:21:40

标签: java arrays arraylist

威尔

ArrayList<int>(20);

最多创建20个数组还是非法语法?

6 个答案:

答案 0 :(得分:5)

由于元素类型不能是原语,因此无法编译。请改用Integer

new ArrayList<Integer>(20);将创建一个由初始容量为20的数组支持的列表。

答案 1 :(得分:2)

也许你应该先阅读API documentation for ArrayList

您可以像这样创建ArrayList个实例:

List<Integer> list = new ArrayList<Integer>(20);

在这种情况下,20是初始容量。

从Java7中,您可以省略参数化类型。

List<Integer> list = new ArrayList<>(20);

您不能使用基本类型作为类型参数。 Why don't Java Generics support primitive types?也很有帮助。

答案 2 :(得分:1)

ArrayList<int>(20);是非法的,因为您不能将原语用作泛型类型,也不能将它们放入标准集合中。

ArrayList<Integer>(20);会创建一个包含20个整数对象的基本容量的列表,但可以根据需要调整其大小。

答案 3 :(得分:1)

假设您将int更改为Integer(您不能将泛型与基元一起使用),这将创建初始大小为20的ArrayList

根据http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#ArrayList(int)上的JavaDocs,它仍然可以超过这个限制:

Constructs an empty list with the specified initial capacity.

答案 4 :(得分:1)

如果你的问题是关于内存分配部分并考虑使用如下语法:

ArrayList<Integer> arr = new ArrayList<Integer>(20);

它只为20 Integer分配内存。它仍然是一个空ArrayList。 这是出于性能原因而使用,但对于大多数常见情况,没有太大的区别(没有内存预分配)。

答案 5 :(得分:0)

通常我们应该对任何Collection对象使用默认构造函数如果我们不知道所需的大小。因为考虑一下你正在创建一个大小为500的ArrayList,但实际上你只添加了5个项目。不建议这样做。 我们不能在泛型中使用原语来表示集合中的类型安全性。此限制用于向旧版Java代码(早于1.5)提供向后兼容性。

有关详细信息,请查看此处:Link 1Link 2Link 3Link 5