威尔
ArrayList<int>(20);
最多创建20个数组还是非法语法?
答案 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)