Lambda学习

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());

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值