先上代码
import java.util.*;
import java.util.stream.Collectors;
/**
* @author jnchen
* @date 2021/3/10 11:11
*/
public class Demo {
static class DemoClass {
private Integer key;
private String value;
public DemoClass(Integer key, String value) {
this.key = key;
this.value = value;
}
public Integer getKey() {
return key;
}
public String getValue() {
return value;
}
}
public static List<DemoClass> generateList() {
List<DemoClass> list = new ArrayList<>();
for (int i = 0; i < 50; i++) {
list.add(new DemoClass((int) (Math.random() * 20), UUID.randomUUID().toString()));
}
return list;
}
public static void main(String[] args) {
List<DemoClass> list = generateList();
Map<Integer, Set<String>> group = list.stream().collect(Collectors.groupingBy(DemoClass::getKey, Collectors.mapping(DemoClass::getValue, Collectors.toSet())));
System.out.println(group);
}
}
需求:我有一个对象,我要按照其中的某个字段分组成一个Map,并且分组的值为另一个字段的值
Java流分组示例
本文展示了一个使用Java Stream API按对象字段进行分组的例子。具体实现中,通过收集器(Collectors)将List集合中的元素根据指定字段进行分组并转换为Map结构,其中Map的键为分组依据,值为该分组下所有对象另一字段的集合。
4961

被折叠的 条评论
为什么被折叠?



