List<Map>之lambda学习总结
List《map》之lambda
//1.List<Map>分组
Map<String,List<Map<String,Object>>> listMap = list.stream().collect(Collectors.groupingBy(e->String.valueOf(e.get("sex"))));
//2.List<Map>分组求和 (先分组再求和)
List<Map<String,Object>> result =new ArrayList<>();
listMap.forEach((k,slist)->{
Map<String,Object> nmap=new HashMap<>();
DoubleSummaryStatistics sumcc = slist.stream().collect(Collectors.summarizingDouble(e->Double.valueOf(e.get("sore").toString())));
nmap.put("sex", slist.get(0).get("sex"));
nmap.put("sore", sumcc.getSum());//求和
result.add(nmap);
});
//3.List<Map>过滤
List<Map<String,Object>> listFilter = list.stream().filter(e-> !"王凡".equals(String.valueOf(e.get("name")))).collect(Collectors.toList());
//4.List<Map>最值
Double min = list.stream().map(e-> Double.valueOf(e.get("sore").toString())).min(Double :: compareTo).get();
Double max = list.stream().map(e-> Double.valueOf(e.get("sore").toString())).max(Double :: compareTo).get();
//5.List<Map>转map<key,map>
Map<String, Map<String,Object>> userMap = list.stream().collect(Collectors.toMap(e->e.get("name").toString(), e -> e,(k1,k2)->k2));
//6.List<Map>排序
Collections.sort(list, new Comparator<Map<String, Object>>(){
public int compare(Map<String, Object> o1, Map<String, Object> o2){
Double value1 = Double.valueOf(o1.get("sore").toString());
Double value2 = Double.valueOf(o2.get("sore").toString());
if(value1<value2){
return -1;
}else{
return 1;
}
}
});
public static void sort(List<Map<String, Object>> targetList, final String sortField, final boolean isAsc) {
Collections.sort(targetList, new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
int ret = 0;
String name1 = String.valueOf(o1.get(sortField).toString());//name1是从你list里面拿出来的一个
String name2 = String.valueOf(o2.get(sortField).toString()); //name1是从你list里面拿出来的第二个name
if (isAsc) {
ret = name1.compareTo(name2);
} else {
ret = name2.compareTo(name1);
}
return ret;
}
});
}
//7.List<Map>去重
list.stream().distinct().collect(Collectors.toList());
//8.List<Map>按单个字段生成字典List
List<String> nameList = list.stream().map(e -> e.get("name").toString()).collect(Collectors.toList());
//9.List<Map>批量新增一个字段值
list.stream().forEach(e -> e.put("age","10"));
List《对象》之lambda
1.分组
Map<String, List<User>> groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex));
2.过滤
List<User> userCommonList = userList.stream().filter(a -> !a.getJobNumber().equals("201901")).collect(Collectors.toList());
List<IncidentDeviceParam> filterList = resultList.stream().filter(p -> {
return p.getDeviceNo().contains(deviceNo);
}).collect(Collectors.toList());
3.求和
int sumAge = userList.stream().mapToInt(User::getAge).sum();
BigDecimal totalQuantity = userList.stream().map(User::getFamilyMemberQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
4.最值
Date minEntryDate = userList.stream().map(User::getEntryDate).min(Date::compareTo).get();
Date maxEntryDate = userList.stream().map(User::getEntryDate).max(Date::compareTo).get();
5.List 转map
Map<Long, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, a -> a,(k1,k2)->k1));
Map<String, MetricsDto> metricsDtoMap = Optional.ofNullable(metricsDtoList).orElse(new ArrayList<>()).stream()
.collect(Collectors.toMap(MetricsDto::getApplicationName, metricsDto -> metricsDto));
6.排序
userList.sort(Comparator.comparing(User::getId));
userList.sort(Comparator.comparing(User::getId).thenComparing(User::getAge));
list.stream().sorted(Comparator.comparing(Dto::getStateCode)).collect(Collectors.toList());
7.去重
List<Long> distinctIdList = idList.stream().distinct().collect(Collectors.toList());
8.获取list某个字段组装新list
List<Long> userIdList = userList.stream().map(a -> a.getId()).collect(Collectors.toList());
9.批量设置list列表字段为同一个值
addList.stream().forEach(a -> a.setDelFlag("0"));
10.去重逗号拼接
String agentNames = schedulingInfoDtos.stream().map(e -> e.getIncidentAgentName()).distinct().collect(Collectors.joining(","));
List
1、处理list数据
List resultList = localCache.getKeys().stream().map(record -> record.replace(LOGIN_FAILED_RECORD_PREFIX, “”)).collect(Collectors.toList());