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

回到顶部