先按照某一字段分组,再按照另外字段获取最大的那个
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)));
分组
List<Matchs> matchsList = new ArrayList();
Map<String,List<Matchs>> MatchsListMap=matchsList.stream().collect(Collectors.groupingBy(Matchs::getMatchDate));
Map<String, List<Map<String, Object>>> res= dataList.stream().collect( groupingBy(map -> map.get("d").toString()));
list中抽出某一个字段的值
List orderNoList=list.stream().map(Order::getOrderNo).collect(Collectors.toList());
List<String> ids= prnInfo.stream().map(m -> m.get("id").toString()).collect(Collectors.toList());
过滤
List<Map<String, Object>> res = prnInfo .stream().filter(e ->Integer.parseInt(e.get("caseFlag").toString()) != 0).collect(Collectors.toList());
变更
List<Map<String, Object>> res= prnInfo .stream().map(x -> {
x.put("encd", Double.parseDouble(x.get("rz")+"")-Double.parseDouble(x.get("tdz")+""));
return x;
}).collect(Collectors.toList());
排序
List<Map<String, Object>> res= prnInfo.stream().sorted((e1,e2) -> {
return -Double.compare(Double.valueOf(e1.get("num").toString()),Double.valueOf(e2.get("num").toString()));
}).collect(Collectors.toList());