Stream通过某个字段过滤重复元素

List<Book> list = new ArrayList<>();
        list.add(new Book("apple"));
        list.add(new Book("apple"));
        list.add(new Book("pear"));
        list.add(new Book("melon"));

        List<Book> assetBasicInfoEntityList = list.stream()
                .filter(distinctByKey(Book::getName))
                .collect(Collectors.toList());

 

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

 

posted on 2022-11-04 15:11  MaXianZhe  阅读(1454)  评论(0编辑  收藏  举报

导航