java中集合用stream流操作能不能将相同的字段的数据归为一个Map里面?

有一个List<Demo>集合,如何用stream流的方式将这个集合中type作为key,相同type对应的<name,value>作为值存到一个Map<String,List<Map<String,Integer>>>中

public class Demo {

    private String type;

    private String name;

    private Integer value;

    public static void main(String[] args) {
        List<Demo> list=new ArrayList<>();
        Demo demo=new Demo();
        demo.setType("system");
        demo.setName("A");
        demo.setValue(1);
        list.add(demo);

        Demo demo1=new Demo();
        demo1.setType("system");
        demo1.setName("B");
        demo1.setValue(2);
        list.add(demo);

        Demo demo2=new Demo();
        demo2.setType("module");
        demo2.setName("A");
        demo2.setValue(1);
        list.add(demo);

    }
}
阅读 1.9k
2 个回答
final Map<String, List<Map<String, Integer>>> listMap = list.stream()
.collect(
        Collectors.groupingBy(
                Demo::getType, 
                Collectors.mapping(d -> Map.of(d.getName(), d.getValue()), Collectors.toList())
        )
);
新手上路,请多包涵

stream流里有根据字段分组的操作

list.stream().collect(Collectors.groupingBy(Demo::getType));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题