本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看<活动链接>
提问:为什么要设置初始大小?
您可以通过执行以下操作来设置ArrayList的初始大小:
ArrayList<Integer> arr=new ArrayList<Integer>(10);
复制代码
但是,你做不到
arr.add(5, 10);
复制代码
因为它会导致超出范围的异常。
如果您无法访问分配的空间,设置初始大小有什么用?
add函数的定义是,add(int index, Object element)所以我不添加索引10。
我自己运行了下,以下是错误
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 0
at java.base/java.util.ArrayList.rangeCheckForAdd(ArrayList.java:787)
at java.base/java.util.ArrayList.add(ArrayList.java:512)
at Util.TestJue.main(TestJue.java:15)
复制代码
回答1:
您将数组列表的大小与容量混淆了:
1, 大小是在列表中的元素的数目;
2, 容量是多少元素列表可以潜在地容纳而不重新分配其内部结构。
调用new ArrayList<Integer>(10)时,您是在设置列表的初始容量,而不是列表的大小。换句话说,以这种方式构造时,数组列表的初始值为空。
将十个元素添加到数组列表的一种方法是使用循环:
for (int i = 0; i < 10; i++) {
arr.add(0);
}
复制代码
在这以后,你可以修改索引为0..9的元素。
回答2:
如果要使用预定义大小的列表,则还可以使用:
List<Integer> arr = Arrays.asList(new Integer[10]);
复制代码
回答3:
您还可以使用Collections类
ArrayList<Integer> arr=new ArrayList<Integer>(Collections.nCopies(10, 0));
复制代码
这会向你的arr中添加10个0
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END