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

java8 steam常用操作相关推荐

  1. Java8 Stram常用操作

    Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读. 流的操作类型主要分为两种: 1.中间操作: 一个流 ...

  2. java8 lambda表达式Stream对List常用操作总结

    List最为java编程语音使用最频繁的数据结构之一,经常涉及到对List数据的各种处理,以前我们只能通过遍历的方式,自己去逐条处理,java8提供了Stream能够满足大部分日常对List的操作,如 ...

  3. 如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类

    下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java8 ...

  4. Java8的流特性-常用操作(例)

    2019独角兽企业重金招聘Python工程师标准>>> 描述: 流的一些常用操作 转自:https://lw900925.github.io/java/java8-stream-ap ...

  5. Java基础学习总结(132)——Java8 Stream流操作学习总结

    传统的数据处理都是用循环来解决,而不是像搜索数据库那样有具体的搜索语句,而Java8的Stream提供了很好的方案,往往一行就搞定了,而且Stream还可以链式操作,一行代码实现多个循环的功能,代码风 ...

  6. Java8 Stream流操作在用户系统中的妙用

    在做目前这个项目的时候,发现以前有一个筛选的需求,老程序员是这么做的,先请求Http服务器得到一长串json数据,大概用A4纸打了40多页那么多,然后将这些对象写入到sqlite数据库中,再用数据库查 ...

  7. TensorFlow常用操作:代码示例

    1,定义矩阵代码示例: import tensorflow as tftf.zeros([3,4]) #定义3行4列元素均为0的矩阵tensor=tf.constant([1,2,3,4])#定义一维 ...

  8. Ubuntu 常用操作

    Ubuntu常用操作 外观操作 修改应用icon图标 终端美化 内存管理 内存查询 分区管理 日志清理 操作执行 自动执行多条命令 外观操作 修改应用icon图标 在/usr/share/applic ...

  9. IOS沙盒Files目录说明和常用操作

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

最新文章

  1. Java进阶之自动拆箱与自动装箱
  2. C++11中std::shared_future的使用
  3. 苹果的浏览器safari无法识别 2016-1-1这样的日期,会返回Invalid Date
  4. python3.6.1安装教程-Linux下python3.6.1环境配置教程
  5. hdu 4676 Sum Of Gcd 莫队+phi反演
  6. vue 本地环境API代理设置和解决跨域
  7. 神经网络初始化trick:大神何凯明教你如何训练网络!
  8. 当前可用的喜马拉雅专辑下载器
  9. MacBook安装wget几种方式
  10. 关于Zipf定律的理解和python实现
  11. Python硬件编程实战------书评
  12. 医药电商平台解决方案
  13. 期货期权希腊字母与场景模拟
  14. 怎么设计制作简洁实用的App交互界面
  15. JAVA编程基础实验
  16. 线程池在美团的最佳实践
  17. 故事与她用计算机打,「故事」他用笔和相机为警察“代言”!(856)
  18. Charles工具使用教程,以及注意事项。
  19. 【最小费用最大流】知识点讲解
  20. qt开发是使用QT creator 还是用VS+qt?

热门文章

  1. 2021已知目前最全的国内CSGO开箱网站大全!
  2. 惠普光影精灵_Windows11换成Windows10
  3. VSCode设置自动保存[全教程]
  4. 利用两阶段法通过寻找基可行解求线性规划问题的最优解
  5. 像素相关概念:PPI、DPI、设备像素、独立像素
  6. PS如何物体加阴影,有什么相关教程吗
  7. ECharts柱状图颜色设置
  8. 五种方法 前端代码实现九宫格布局
  9. PS中消除图片边缘的锯齿
  10. 各类密码如何设置才能避免黑客盗取,学习一下!