繁体   English   中英

在Java中使用n个空1D列表初始化多维列表

[英]initializing a multidimensional list with n empty 1D lists in Java

我有一个多维列表

List<List<Integer>> myList;

我希望它的尺寸​​在运行时指定,因此在代码中输入:

myList = Collections.synchronizedList(new ArrayList<List<Integer>>(n));

我希望这会将mylist初始化为具有n个元素(每个元素具有零个元素)的列表,但是那没有发生。 我只得到一个空清单。 显然,该构造函数“以指定的初始容量构造一个空列表”。 这不是我想要的。

我知道我可以遍历mylistadd()空的一维列表,但是有什么方法可以用更少的代码来实现我想要的?

首先,构造函数ArrayList<T>(int capacity)不会在列表中插入任何元素,因此您不是在指定大小,而是在指定初始容量。

基本上,您无需内部调整大小即可允许列表最多插入n个元素。

因此,外部列表仍然为空。 您不能使用Collections.fill因为每次都需要一个不同的内部List<Integer> ,而fill只会将所有元素设置为相同的引用。 因此,您必须手动插入它们:

for (int i = 0; i < n; ++i)
  myList.add(new ArrayList<Integer>());

请注意,无论如何,由于您将其指定为List<List<Integer>> (这很有意义),因此Java将无法默认初始化任何东西,因为List<Integer>仅在一个接口中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM