zoukankan      html  css  js  c++  java
  • java8 去重属性增强

    通过Stream.filter不同属性来过滤重复

    
        /**
         * 通过对象属性去重
         *
         * @param keyExtractor
         * @param <T>
         * @return
         */
        public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
            Set<Object> seen = ConcurrentHashMap.newKeySet();
            return t -> seen.add(keyExtractor.apply(t));
        }
    
    

    根据属性去重,并且进行信息整合

    
        /**
         * 通过对象属性去重,并对相同Key的对象执行操作,适合两个list相同属性并集
         *
         * @param keyExtractor
         * @param thenFunction
         * @param <T>
         * @return
         */
        public static <T> Predicate<T> distinctAndThen(Function<? super T, Object> keyExtractor,
                                                       BiConsumer<T, T> thenFunction) {
            Map<Object, T> map = new ConcurrentHashMap<>(10);
            return t -> {
                if (map.containsKey(keyExtractor.apply(t))) {
                    thenFunction.accept(t, map.get(keyExtractor.apply(t)));
                    return false;
                } else {
                    map.put(keyExtractor.apply(t), t);
                    return true;
                }
            };
        }
    
    
  • 相关阅读:
    表单数据源控制器笔记
    方法汇总1
    Persistence.beans
    数据库外键理解
    SQL语句缺少
    树型结构需要绑定的字段
    模型绑定替换
    乱码
    表单的验证:客户端验证和服务器端验证
    表单
  • 原文地址:https://www.cnblogs.com/Mr-GG/p/java8-qu-zhong-shu-xing-zeng-qiang.html
Copyright © 2011-2022 走看看