1处理分组后取每组最大
Map<String, HitRuleConfig> configMap = configList.parallelStream().collect(
Collectors.groupingBy(HitRuleConfig::getAppId, // 先根据appId分组
Collectors.collectingAndThen(
Collectors.reducing(( c1, c2) -> c1.getVersionSort() > c2.getVersionSort() ? c1 : c2), Optional::get)));
2stream对实体类的数值型字段求和
long total1 = list.stream().map(Bean::getNum1).reduce(Long::sum).get();
double total2 = list.stream().map(Bean::getNum2).reduce(Double::sum).get();
BigDecimal result2 = userList.stream()
// 将user对象的mongey取出来map为Bigdecimal
.map(User::getMoney)
// 使用reduce聚合函数,实现累加器
.reduce(BigDecimal.ZERO,BigDecimal::add);
3stream对实体属性进行分组
Map<String, List<Map>> top3MaxSalesByStoreid = store_3product_list.stream().collect(Collectors.groupingBy(e -> e.get("storeId").toString()));
Map<String, List<ConsultCategory>> collect = list.stream().collect(Collectors.groupingBy(ConsultCategory::getCmsId));
4stream根据属性进行分组,并获取某一属性的集合
Map<String, Set<String>> collect = messageInformCms.stream().collect(Collectors.groupingBy(MessageInformCms::getState, Collectors.mapping(MessageInformCms::getContent, Collectors.toSet())));