在Java中初始化一个包含n个空1D列表的多维列表



我有一个多维List

List<List<Integer>> myList;

我希望在运行时指定它的维度,因此在代码中,我放入:

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

我希望这会将mylist初始化为一个具有n个元素的列表,每个元素都有0个元素,但这没有发生。我只得到一个空列表。显然,构造函数"构造一个具有指定初始容量的空列表",这并不是我想要的。

我知道我可以循环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>只是一个接口。

相关内容

  • 没有找到相关文章

最新更新