stream流根据某个属性去重

发布时间:2024年01月23日

需求:根据学生名称去重,获取新的集合

1.实体类

@Data
public class Student {
  private String stuNo;
  private String name;
}

2.实现

//filter去重方法实现类
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    Set<Object> seen = ConcurrentHashMap.newKeySet();
    return t -> seen.add(keyExtractor.apply(t));
}

//直接运行测试方法
@Test
public void distinctByProperty1() throws Exception {
    //根据对象的属性去重
    List<Student> nList2 = studentList.stream().filter(distinctByKey(Student::getName))
                                     .collect(Collectors.toList());
}
文章来源:https://blog.csdn.net/weixin_42943586/article/details/135772380
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。