3 回答
TA贡献1884条经验 获得超4个赞
从 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], [], [], [], []]
TA贡献1844条经验 获得超8个赞
System.out.println(bucket.get(5).add(5));
您需要了解这行代码,您正在尝试从数组列表“存储桶”中访问第5个元素,但是您是否在存储桶中添加了任何元素(在这种情况下,该元素是另一个数组列表)ArrayList
除非您添加元素,否则无法访问它们,因为它们不存在,因此您会在尝试访问第5个元素时看到ArrayOutOfBoundException
bucket.get(5)
你可能想通过ArrayList的javadoc https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
TA贡献1811条经验 获得超4个赞
法典:
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], []]
添加回答
举报