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. verilog中有符号数运算
  2. 用loader.loadbytes直接load bitmapdata.getpixels产生的bytearray
  3. sublime配置随笔提示
  4. bootstrap 彈窗默認打開_Bootstrap 手册 07 - JS 组件篇
  5. java生成动态验证码_动态生成验证码案例
  6. 在.NET Core 中使用Quartz.NET
  7. 手机距离传感器坏了有什么影响_适合手机兼职的工作有什么影响吗
  8. Field 'CID' doesn't have a default value
  9. P5 MySQL数据类型和类型选择
  10. jquery prop('checked', true)解决attr('checked', true)不能选中radio问题
  11. NYOJ-111分数加减法
  12. python服务器查看文件更改记录,python 查看远程服务器上的文件
  13. 400一双的人工肌肉跑鞋,能否扩大鸿星尔克“科技牌”赢面?
  14. 权限提升-烂土豆dll劫持引号路径服务权限
  15. CAP、BASE理论
  16. 系统试运行报告是谁写的_家门口就能免费健康自检自测 延吉智慧健康驿站试运行 健康检测服务将惠及更多居民...
  17. Only no-arg methods may be annotated with @Scheduled 的解决方法
  18. android app 马甲包,关于Android多渠道打包和马甲包问题
  19. c语言把字符变成asc11值,PLC字符与数据之间如何进行转换?
  20. 机器学习吴恩达课程总结(一)

热门文章

  1. 解决 the generation has been cancelled because errors have been found by the check model
  2. fun函数是什么php,c语言fun函数有什么例题?_后端开发
  3. android3g运存,为什么iphoneX只有3G运存还比安卓的6G运存快?
  4. 关于帧间距 IFG技术的讨论
  5. 不用对 雷蛇影鲛终极版thx 耳机开启空间音效。
  6. RabbitMQ管理界面出现 Unacked 消息
  7. IntelliJ IDEA快捷键以及使用技巧
  8. 自由恋爱离婚率高.婚姻就是找匹配,无关形式
  9. 挖掘机哪家强?不找蓝翔找AI!
  10. 华为鸿蒙系统能继承王者荣耀吗,华为鸿蒙玩王者荣耀账号互通吗?华为鸿蒙玩王者荣耀会不会影响?...