记录:已有对象集合List<Employee> ,需要获取Employee的字段 name出现最多的字段值(即根据name字段分组->排序->取值);
public static void main(String[] args) {
List<Employee> list = new ArrayList(){{
add(new Employee(10,"李二"));
add(new Employee(18,"王五"));
add(new Employee(11, "赵四"));
add(new Employee(21,"王五"));
}};
String name = list.stream()
//判定字段非空
.filter(r -> Objects.nonNull(r.getName()) && !r.getName().isEmpty())
.collect(Collectors.groupingBy(Employee::getName))
.values()
.stream()
.sorted((a, b) -> b.size() - a.size())
//实际需要先判定结果集合非空,再获取集合元素
.collect(Collectors.toList()).get(0).get(0).getName();
}
注意! 注意!注意!
1.需要对指定指端做非空判定;
2.排序集合收集后需要对集合进行非空判定;