我试图将嵌套ArrayList
的初始容量设置为某个值(例如10),但是当我尝试访问内部列表以添加一些元素时,它给了我ArrayOutOfBoundException
。请提出一些好的解决方案!!!
下面是代码段
public static void main(String[] args)
{
ArrayList<ArrayList<Integer>> bucket = new ArrayList<ArrayList<Integer>>();
System.out.println(bucket.get(5).add(5));
System.out.println(bucket);
}
答案 0 :(得分:0)
System.out.println(bucket.get(5).add(5));
您需要了解这一行代码,尝试访问数组列表“ bucket”中的第5个元素,但已在存储桶ArrayList
中添加了任何元素(在这种情况下,该元素是另一个元素数组列表)
除非您添加元素,否则将无法访问它们,因为它们不存在,因此在尝试访问ArrayOutOfBoundException
的第5个元素时会看到bucket.get(5)
您可能想要遍历ArrayList的javadoc https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
答案 1 :(得分:0)
代码:
public class Example {
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> bucket = new ArrayList<ArrayList<Integer>>();
//initial capacity of the nested arraylist to 5.
System.out.println(bucket.add(new ArrayList<>(5)));
ArrayList<Integer> element = new ArrayList<>();
element.add(5);
bucket.add(0, element);
System.out.println(bucket);
}
}
输出:
true
[[5], []]
答案 2 :(得分:0)
从Java 8开始,您可以使用Stream.generate
生成一个空列表。
import java.util.*;
import java.util.stream.*;
public class ListOfLists {
public static void main(String[] args) {
List<List<Integer>> bucket = listOfList(10);
bucket.get(5).add(5);
System.out.println(bucket);
}
public static <T> List<List<T>> listOfList(int size) {
return Stream.generate(ArrayList<T>::new).limit(size).collect(Collectors.toList());
}
}
[[], [], [], [], [], [5], [], [], [], []]