【问题标题】:Initialize Map from Set从集合初始化地图
【发布时间】:2020-05-11 09:35:05
【问题描述】:

我有一组学生 - Set<Student> students

class Student{
    String Id;
    String getId(){ return Id;} 
.....
}

我正在尝试使用上面设置的条目初始化Map<String,List<StudentResult>>:

Map<String,List<StudentResult>> studentResultMap = students.keySet().stream().collect(
                                                Collectors.toMap(x -> x.getId(),new ArrayList<StudentResult>()));

但这不会编译 - 如何实现?

【问题讨论】:

    标签: java dictionary java-8 set java-stream


    【解决方案1】:

    new ArrayList&lt;StudentResult&gt;() 没有为Function 参数提供正确的参数。

    你需要使用:

    x -> new ArrayList<StudentResult>()
    

    旁注:如果students 是Set,students.keySet() 也不会编译。你可以直接拨打stream就可以了:

    students.stream().collect(Collectors.toMap(x -> x.getId(), 
                                               a -> new ArrayList<>()));
    

    【讨论】:

      【解决方案2】:

      这是你的问题:

      Map<String,List<StudentResult>> studentResultMap = students
          .stream().collect(Collectors.toMap(x -> x.getId(), new ArrayList<StudentResult>()));
      

      您需要将两个函数传递给Collectors.toMap,但您将List 实例作为第二个参数传递

      Map<String,List<StudentResult>> studentResultMap = students
          .stream().collect(Collectors.toMap(x -> x.getId(), x -> new ArrayList<StudentResult>()));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-19
        • 2018-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 2019-01-24
        相关资源
        最近更新 更多