[英]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个元素(每个元素具有零个元素)的列表,但是那没有发生。 我只得到一个空清单。 显然,该构造函数“以指定的初始容量构造一个空列表”。 这不是我想要的。
我知道我可以遍历mylist
和add()
空的一维列表,但是有什么方法可以用更少的代码来实现我想要的?
首先,构造函数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.