根据对象某个属性进行过滤

public class Test {
    public static void main(String[] args) {
            Book one = Book.builder().id(1).name("one").build();
            Book two = Book.builder().id(1).name("two").build();
            Book three = Book.builder().id(2).name("one").build();
            List<Book> voList = Lists.newArrayList(one, three, two);
            List<Book> finalList = voList.stream().filter(distinctByKey(Book::getId)).collect(Collectors.toList());
            System.out.println(finalList);
    }

    private static <T> Predicate<T> distinctByKey(Function<? super T, Object> function) {
        Map<Object, Boolean> map = new ConcurrentHashMap<>();
        return t -> map.putIfAbsent(function.apply(t), Boolean.TRUE) == null;
    }
}
发布了85 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/New_CJ/article/details/99587208