【问题标题】:How to convert List to Map using Java Stream API? [duplicate]如何使用 Java Stream API 将列表转换为地图? [复制]
【发布时间】:2020-03-07 08:05:47
【问题描述】:

我需要将POJOList 转换为Map<Integer, List<MyClass>>,其中键是来自MyClass 的值,即下面的代码如下所示:

public class MyClass {
    public int id;         // this field value must be key of map.
    public String name;
}

public static void main(String... args) {
    List<MyClass> lst = new ArrayList();
    lst.add(new MyClass(1, "John"));
    lst.add(new MyClass(1, "Peter"));
    lst.add(new MyClass(2, "Sarah"));

    Map<Integer, List<MyClass>> res = lst.collect(..);
}

我该怎么做?你能帮帮我吗?

【问题讨论】:

  • 以及 Map> 的键是什么,如果您计划使用 MyClass 的 id,由于重复键,您往往会丢失数据
  • @ShaileshChandra 不,可以分组,并且对于每个重复的id,实体将作为地图的相应值添加到列表中。
  • @Naman 明白了,实际上我将目标读作 Map 我的错

标签: java java-stream grouping collectors


【解决方案1】:

您可以使用groupingBy

Map<Integer, List<MyClass>> res = lst.stream()
            .collect(Collectors.groupingBy(MyClass::getId));

旁白:对现有代码进行小幅更正,避免未检查的赋值使用:

List<MyClass> lst = new ArrayList<>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 2016-11-16
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多