studentList = studentList.stream().distinct().collect(Collectors.toList()); out.print("distinct去重后:"); out.println(objectMapper.writeValueAsString(studentList)); // 这里我们将 distinctByKey() 方法作为 filter() 的参数,过滤掉那些不能加入到 set 的元素 studentList = studentList.stream().fil...
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...
二、对某个字段过滤重复数据:使用HashMap privatestatic<T> Predicate<T> distinctByKey(Function<?superT, ?>keyExtractor) { Map<Object, Boolean> seen =newConcurrentHashMap<>();returnt -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) ==null; } list.stream().filter(distinctByKey(User::g...
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<?
Java Stream中的distinct指定key使用方法 Java 8引入了Stream API,简化了集合的操作,带来了函数式编程的便利。但在对对象集合进行去重时,往往我们并不仅仅是希望根据对象的完整结构去重,而是希望根据某个特定的属性(即key)来实现去重。这篇文章将通过实例来介绍如何借助Java Stream实现基于指定key的distinct操作。
使用Java的Stream去重 回到最初的问题,之所以提这个问题是因为想要将数据库侧去重拿到Java端,那么数据量可能比较大,比如10w条。对于大数据,采用Stream相关函数是最简单的了。正好Stream也提供了distinct函数。那么应该怎么用呢? users.parallelStream().distinct().forEach(System.out::println); ...
distinct() 方法声明如下: Stream<T> distinct(); 1.1 对于 String 列表的去重 因为String 类已经覆写了 equals() 和 hashCode() 方法,所以可以去重成功。 @Test public void listDistinctByStreamDistinct() { // 1. 对于 String 列表去重 List<String> stringList = new ArrayList<String>() {{ ...
distinct() 方法声明如下: Streamdistinct(); 1.1 对于 String 列表的去重 因为String 类已经覆写了 equals() 和 hashCode() 方法,所以可以去重成功。 @Test public void listDistinctByStreamDistinct() { // 1. 对于 String 列表去重 ListstringList = new ArrayList() {{ ...
⼆、对某个字段过滤重复数据:使⽤HashMap private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHashMap<>();return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;} list.stream().filter(...
List<Entity>lists=list.stream().filter(distinctByKey(b->b.getTid())).collect(Collectors.toList()); Java集合List去重的几种方式 : 1、使用LinkedHashSet删除arraylist中的重复数据 2、使用java8新特性stream进行List去重 3、利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断...