在Java中将集合的集合转换为列表的列表
List<List<Integer>> lst = new ArrayList<List<>>();
假设我有上面声明的列表列表,名称为 lst,我有一组在下面声明的 set 元素变量。我怎样才能把这个集合的元素放到 lst 中?
Set<Set<Integer>> set = new HashSet<Set<>>();
回答
假设您有一组集合:
Set<Set<Integer>> setOfSets = new HashSet<>();
要将其转换为列表列表:
List<List<Integer>> listOfLists = new ArrayList<>();
请执行下列操作:
for (Set<Integer> set : setOfSets) {
listOfLists.add(new ArrayList<>(set));
}
当您将任何集合传递给 ArrayList 构造函数时,它会使用该集合中的所有元素创建一个新的 ArrayList。换句话说,new ArrayList(set)类似于list = new ArrayList()然后list.addAll(set)。
回答
使用 Java 8 特性:
Set<Set<Integer>> data = new HashSet<>();
List<List<Integer>> result = data.stream()
.map(ArrayList::new)
.collect(Collectors.toList());
例子:
Set<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);
Set<Integer> set2 = new HashSet<>();
set2.add(4);
set2.add(5);
set2.add(6);
data.add(set1);
data.add(set2);
List<List<Integer>> result = data.stream()
.map(ArrayList::new)
.collect(Collectors.toList());
打印结果:
[[1, 2, 3], [4, 5, 6]] // list of lists