首页 > 解决方案 > 如何在列表中创建嵌套列表

问题描述

为什么这个声明

List<String> ls = new ArrayList<>(new ArrayList<>(new ArrayList<>(Arrays.asList("A"))));

不给我一个嵌套的 ArrayList 回来?我得到的是一个列表,里面有一个元素(“A”)。

标签: java

解决方案


有一个构造函数ArrayList(Collection<? extends E> c),它ArrayList基于集合中的元素创建一个,因此您可以调用new ArrayList(Arrays.asList("A"));创建一个ArrayList其中包含单个元素"A"的(当需要具有初始值的可变列表时,有时可以看到此代码,因为Arrays.asList()无法更改大小) .

但是,您在其new ArrayList(之上添加新层的方式将调用相同的构造函数,从集合中获取元素并将它们放入单个数组列表中,而不是嵌套它们。因此,您不能使用该构造函数来创建嵌套列表。

您的代码等效于以下代码,如您所见,它始终只是一个字符串列表

List<String> ls = new ArrayList<>(Arrays.asList("A"));
ls = new ArrayList<>(ls);
ls = new ArrayList<>(ls);

推荐阅读