JAVA Stream去重代码写法


  如果需要对一个list进行去重,最简单的写法是

List objects = new ArrayList<>();
        objects.addAll(documentSearchList);
//      objects.addAll(documentSearchTagsList);

        return objects.stream().distinct().collect(Collectors.toList());

  重点就是distinct方法,需要成员实现hashCode和equals方法

  还有一种更变态的写法

private static  Predicate distinctByKey(Function<? super T, ?> keyExtractor) {
    Set seen = ConcurrentHashMap.newKeySet();
    return t -> seen.add(keyExtractor.apply(t));
}


studentList = studentList.stream().filter(distinctByKey(Student::getName)).collect(Collectors.toList())
jdk