相关疑难解决方法(0)

ArrayList的初始大小

您可以通过执行设置ArrayList的初始大小

ArrayList<Integer> arr=new ArrayList<Integer>(10);
Run Code Online (Sandbox Code Playgroud)

但是,你做不到

arr.add(5, 10);
Run Code Online (Sandbox Code Playgroud)

因为它会导致越界异常.

如果您无法访问分配的空间,设置初始大小有什么用?

add函数定义为add(int index, Object element)我没有添加到索引10.

java arraylist indexoutofboundsexception

234
推荐指数
9
解决办法
36万
查看次数

ArrayList初始容量和IndexOutOfBoundsException

考虑以下示例代码:

List<String> myList = new ArrayList<String>(7);
myList.add(5, "Hello");
myList.removeAll(Collections.singleton(null));

System.out.println(myList.size() + " objects:" );
for (String s : myList) {
    System.out.println("\t" + s);
}
Run Code Online (Sandbox Code Playgroud)

myList 初始化初始容量为7,然后下一行尝试在位置5添加字符串"Hello".这会抛出IndexOutOfBoundsException:

线程"main"中的异常java.lang.IndexOutOfBoundsException:索引:5,大小:0

我查看了关于"初始容量"对于ArrayList意味着什么的这个问题.据我所知,这个特殊的构造函数为7个String元素分配了空间,如果我们尝试在列表中添加8个元素,则必须分配更多的空间.

明白的是为什么它不会创建大小为7的"空"列表,每个索引都有空值,类似于我们声明的情况String[] myArray = new String[7].我记得我知道ArrayList是Java的动态数组实现,所以我期待类似的行为.如果我在申报时实际上没有分配7个字符串的空间,new ArrayList<String>(7)实际发生了什么?

java string arraylist

24
推荐指数
2
解决办法
2万
查看次数