java8 steam常用操作

java8 stream常用操作

  1. 遍历

    list.stream().forEach(System.out::println);
    
  2. 获取实体list某个字段集合

    list.stream().map(e -> e.getId).collect(Collectors.toList());
    //可以有更多操作
    list.stream().map(e ->Long.parseLong(e.getId)).collect(Collectors.toList());
    
  3. 过滤数据

    List<entity> heartStatusDataList  = list.stream().filter(e->"1".equals(e.getType())).collect(Collectors.toList());
    
  4. list分组为map

    Map<String, List<entity>> map = list.stream().collect(Collectors.groupingBy(e->e.getType()));
    
  5. 实体list字段累加

    //Integer类型字段累加
    list.stream().map(entity::getDistance).reduce(Integer::sum));
    //Double类型字段累加
    list.stream().map(entity::getDistance).reduce(Double::sum));
    list.stream().mapToDouble(entity::getDistance).sum();
    //Bigdicimal类型字段累加
    Bigdicimal distance = list.stream().map(entity::getDistance).reduce(BigDecimal.ZERO,BigDecimal::add);
    
  6. 前端传过来以逗号拼接id字符串转idList

    Arrays.asList(((String)params.get("idList")).split(",")).stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
    
  7. 拼接

    String idStr = list.stream().map(x -> x.getId().toString()).collect(Collectors.joining(","));
    
  8. map分类求和

    /**
     *按姓名分类统计积分
    **/
    DailydataAndIntegralEntity data1 = new DailydataAndIntegralEntity();
    DailydataAndIntegralEntity data2 = new DailydataAndIntegralEntity();
    DailydataAndIntegralEntity data3 = new DailydataAndIntegralEntity();
    DailydataAndIntegralEntity data4 = new DailydataAndIntegralEntity();
    data1.setName("aa");
    data1.setTotalDayIntegral(1.0);
    data2.setName("bb");
    data2.setTotalDayIntegral(2.0);
    data3.setName("aa");
    data3.setTotalDayIntegral(3.0);
    data4.setName("dd");
    data4.setTotalDayIntegral(4.0);
    List<DailydataAndIntegralEntity> dailyDataList = new ArrayList<>();
    dailyDataList.add(data1);
    dailyDataList.add(data2);
    dailyDataList.add(data3);
    dailyDataList.add(data4);
    
    //按姓名分类
    Map<String,List<DailydataAndIntegralEntity>> dataListMap = 	dailyDataList.stream().collect(Collectors.groupingBy(DailydataAndIntegralEntity::getName));
    //分类后的list
    List<Map<String, Object>> returnList = new ArrayList<>();
    dataListMap.forEach((e,eList) -> {
        Map<String, Object> returnMap = new HashMap<>();
        eList.forEach(data->{
            //排名
            //姓名
            returnMap.put("name", e);
            //积分
            returnMap.put("integral", eList.stream().map(DailydataAndIntegralEntity::getTotalDayIntegral).reduce(Double::sum));
            returnList.add(returnMap);
        });
    });
    
  9. 排序

    //按某字段大小倒序排序
    rankResList = rankResList.stream().sorted(Comparator.comparingDouble(TrainRankResEntity::getData).reversed()).collect(Collectors.toList());
    
    //自定义排序
    returnList = returnList.stream().sorted((o1, o2) -> {
        if (o1.getStartTime().before(o2.getStartTime())) {
            return -1;
        } else if (o1.getStartTime().after(o2.getStartTime())) {
            return 1;
        } else {
            return 0;
        }
    }).collect(Collectors.toList());
    
  10. 去重

    /**
    *整体去重
    **/
    list.stream().distinct().collect(Collectors.toList());
    
    /**
    *根据某几个属性去重
    **/
     list.stream().collect(Collectors.collectingAndThen(
                    Collectors.toCollection(() -> new TreeSet<>(
                            Comparator.comparing(p->p.getPatentName() + ";" + p.getLevel()))), ArrayList::new));
    
  11. 最小值

    list.stream().min(Comparator.comparingDouble(IntegralTopListEntity::getIntegral)).orElseGet(null);
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值