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);
}
}
回答:
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));
以上是 java中集合用stream流操作能不能将相同的字段的数据归为一个Map里面? 的全部内容, 来源链接: utcz.com/p/944828.html