stream 流 and 函数式编程使用经验

这篇博客探讨了Java中集合的排序、查找最大值、转换为Set以及使用流进行过滤等操作。通过示例展示了如何使用Comparator进行升序和降序排序,以及如何利用函数式编程的特性高效地处理数据。此外,还提到了如何使用Stream API进行并行处理和去重操作。
摘要由CSDN通过智能技术生成

排序


 sortScore = sortScore.stream()
                   .sorted(Comparator.comparing((Double o1) -> o1).reversed())
                    .collect(Collectors.toCollection(LinkedHashSet::new));

函数式排序(正序 and 逆序)

public static void itemSort(List<Map<String, Object>> mapList, String order_key, String sort) {
        if (sort.equals("desc")) {
            mapList.sort(Comparator.comparingDouble(item -> (Double) item.get(order_key)));
            Collections.reverse(mapList);
        } else if (sort.equals("asc")) {
            mapList.sort(Comparator.comparingDouble(item -> (Double) item.get(order_key)));
        }
    }

求最大值

 Double sortFirst = sortScore.stream().max(Double::compare).get();

list 转set

 Set<String> tempMap = effectiveCoupon.parallelStream().map(CouponStatusInfo::getActivityId).collect(Collectors.toSet());

foreach 使用

effectiveCoupon.stream().forEach(couponInfo -> {
                        String activityId = couponInfo.getActivityId();
                        Long startTime = couponInfo.getStartTime();
                        Long endTime = couponInfo.getEndTime();
                        }
                    });

过滤

 originAllItems = originAllItems.stream().filter(item -> {
                return true;
            }).collect(Collectors.toList());

List 先去重再去重,顺序去重

            // 先根据a 去重,后根据b去重
            final List<Map<String, Object>> returnFilterItems = items.stream().
                    filter(distinctByKey1(item -> item.get("a").toString()))
                    .filter(distinctByKey1(item -> item.get("b").toString())).collect(Collectors.toList());
                    
   static <T> Predicate<T> distinctByKey1(Function<? super T, ?> keyExtractor) {
        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值