我有一个多维列表
List<List<Integer>> myList;
我希望它的维度在运行时指定,所以在代码中,我把:
myList = Collections.synchronizedList(new ArrayList<List<Integer>>(n));
我希望这会将mylist
初始化为一个列表,其中包含n个元素,每个元素都有零元素但是没有发生。我只得到一个空列表。显然是构造函数,“构造一个具有指定初始容量的空列表”。这不是我想要的。
我知道我可以遍历mylist
和add()
空的一维列表,但有没有办法用更少的代码来实现我想要的东西?
答案 0 :(得分:1)
首先,构造函数"hello"
不会在列表中插入任何元素,因此您没有指定大小,而是指定初始容量。
基本上,您允许列表最多插入n个元素,而无需进行内部调整大小。
所以外部列表仍然是空的。您无法使用std::string("hello")
因为每次都需要不同的内部ArrayList<T>(int capacity)
,而Collections.fill
只会将所有元素设置为相同的引用。所以你不得不手动插入它们:
List<Integer>
请注意,在任何情况下,由于您将其指定为fill
(这是有意义的),Java将无法默认初始化任何内容,因为for (int i = 0; i < n; ++i)
myList.add(new ArrayList<Integer>());
只是在一个接口中。