我们首先创建一个方法作为 Stream.filter() 的参数,其返回类型为 Predicate,原理就是判断一个元素能否加入到 Set 中去,代码如下: private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Set<Object> seen = ConcurrentHashMap.newKeySet(); return t -> seen.add(keyExtract...
list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->newTreeSet<>(Comparator.comparing(s -> s.getAge())), ArrayList::new)) .forEach(System.out::println); }//次方法来源于:https://blog.csdn.net/haiyoung/article/details/80934467static<T> Predicate<T> distinctByKey1...
Java stream根据对象某个字段过滤重复数据:distinctByKey 一、原生的distinct()不支持按照列表里的对象某个属性去重 二、对某个字段过滤重复数据:使用HashMap privatestatic<T> Predicate<T> distinctByKey(Function<?superT, ?>keyExtractor) { Map<Object, Boolean> seen =newConcurrentHashMap<>();returnt -> s...
System.out.println("指定age属性去重(方法三):"); list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(s -> s.getAge())), ArrayList::new)) .forEach(System.out::println); } static <T> Predicate<T> distinctByKey1(Function<?
Streamdistinct(); 复制代码1.1对于 String 列表的去重 因为String 类已经覆写了 equals() 和 hashCode() 方法,所以可以去重成功。 @Testpublic voidlistDistinctByStreamDistinct() {//1. 对于 String 列表去重 List stringList = new ArrayList() {{ ...
Javastream根据对象某个字段过滤重复数据:distinctByKey ⼀、原⽣的distinct()不⽀持按照列表⾥的对象某个属性去重 ⼆、对某个字段过滤重复数据:使⽤HashMap private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHash...
distinct() 方法声明如下: Streamdistinct(); 1.1 对于 String 列表的去重 因为String 类已经覆写了 equals() 和 hashCode() 方法,所以可以去重成功。 @Test public void listDistinctByStreamDistinct() { // 1. 对于 String 列表去重 ListstringList = new ArrayList() {{ ...
我们首先创建一个方法作为 Stream.filter() 的参数,其返回类型为 Predicate,原理就是判断一个元素能否加入到 Set 中去,代码如下: private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Set<Object> seen = ConcurrentHashMap.newKeySet(); return t -> seen.add(keyExtract...
distinct()不提供按照属性对对象列表进行去重的直接实现。它是基于hashCode()和equals()工作的。 如果我们想要按照对象的属性,对列表进行去重,我们可以通过如下方法来实现: publicstatic<T>Predicate<T>distinctByKey(Function<?superT,?>keyExtractor){Map<Object,Boolean>seen=newConcurrentHashMap<>();returnt->seen...
2. Stream.distinct() with List of Objects 在此示例中,我们有一个Book对象列表。 为了对列表进行去重,该类将重写hashCode()和equals()。 Book.java package com.concretepage; public class Book { private String name; private int price; public Book(String name, int price) { ...