你可以通过下面的操作来设置数组列表的初始大小
ArrayList<Integer> arr=new ArrayList<Integer>(10);
然而,你不能这样做
arr.add(5, 10);
因为它会导致出界异常。
如果不能访问所分配的空间,那么设置初始大小有什么用呢?
添加函数定义为add(int index, Object element),所以我没有添加到索引10。
你可以通过下面的操作来设置数组列表的初始大小
ArrayList<Integer> arr=new ArrayList<Integer>(10);
然而,你不能这样做
arr.add(5, 10);
因为它会导致出界异常。
如果不能访问所分配的空间,那么设置初始大小有什么用呢?
添加函数定义为add(int index, Object element),所以我没有添加到索引10。
当前回答
我对流的看法。我觉得还是用它比较好
IntStream.generate(i -> MyClass.contruct())
.limit(INT_SIZE)
.collect(Collectors.toList());
可以灵活地设置任何初始值。
其他回答
现在你的列表中没有元素,所以当索引5不存在时,你不能添加到它。您混淆了列表的容量与其当前大小。
就叫:
arr.add(10)
将整数添加到数组列表中
10是AL的初始容量,而不是size (size是0)。当你要有很多元素时,你应该把初始容量提到一个较高的值,因为它避免了在不断添加元素时扩展容量的开销。
myList = new ArrayList(10);
// myList.add(3, "DDD");
// myList.add(9, "III");
myList.add(0, "AAA");
myList.add(1, "BBB");
for(String item:myList){
System.out.println("inside list : "+item);
}
/*在内部声明数组列表的初始容量只是为了节省移位时间;当我们在内部添加元素时,它会检查容量以增加容量,你可以先添加索引为0的元素,然后再添加索引为1的元素,等等。* /
我也遇到过类似的问题,只是知道arrayList是List接口的一个可调整大小的数组实现,我还希望您可以将元素添加到任何点,但至少可以选择定义初始大小。 不管怎样,你可以先创建一个数组,然后把它转换成一个列表,比如:
int index = 5;
int size = 10;
Integer[] array = new Integer[size];
array[index] = value;
...
List<Integer> list = Arrays.asList(array);
or
List<Integer> list = Arrays.asList(new Integer[size]);
list.set(index, value);
尽管你的数组列表的容量是10,但实际的数组中没有元素。add方法用于将元素插入到实际列表中。因为它没有元素,所以不能在索引5中插入一个元素。