Java中将Set of Set转换为List of List

6
List<List<Integer>> lst = new ArrayList<List<>>();

假设我有一个名为lst的列表,由多个嵌套列表组成。下面我已经声明了一个包含多个嵌套集合元素的变量。如何将这个集合中的元素放入lst中?
Set<Set<Integer>> set = new HashSet<Set<>>();

第二个声明没有意义。您正在尝试使用HashSet对象初始化列表变量。 - khelwood
这段代码无法编译... 一个 HashSet 不能被赋值给一个 List。 - Davide Lorenzo MARINO
你的标题说你想将一组集合转换为一组列表。但是你的问题说你已经有了一组列表。 - khelwood
我有一个Set<Set<Integer>>集合,其中包含所有元素。我需要将这些元素全部放入列表lst中。 - Aditya
2个回答

5

使用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

5

假设你有一组集合:

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接