【问题标题】:Convert Set of Set to List of List in Java在 Java 中将 Set 的 Set 转换为 List 的列表
【发布时间】:2021-10-15 21:31:53
【问题描述】:
List<List<Integer>> lst = new ArrayList<List<>>();

假设我有上面声明的列表列表,名称为 lst,并且我有一组下面声明的集合元素变量。如何将这个集合的元素放入 lst?

Set<Set<Integer>> set = new HashSet<Set<>>();

【问题讨论】:

  • 第二个声明没有意义。您正在尝试使用 hashset 对象初始化列表变量。
  • 此代码无法编译... HashSet 不能分配给 List
  • 您的标题说您要将一组集合转换为列表列表。但你的问题是说你已经有一个列表列表。
  • 我有一个集合中的所有元素,它是 Set> 集合。我必须将所有这些元素放入列表 lst。

标签: java list arraylist set hashset


【解决方案1】:

假设你有一组集合:

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)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 2011-08-22
      • 2016-09-28
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      相关资源
      最近更新 更多