java8 steam常用操作
java8 stream常用操作
遍历
list.stream().forEach(System.out::println);
获取实体list某个字段集合
list.stream().map(e -> e.getId).collect(Collectors.toList()); //可以有更多操作 list.stream().map(e ->Long.parseLong(e.getId)).collect(Collectors.toList());
过滤数据
List<entity> heartStatusDataList = list.stream().filter(e->"1".equals(e.getType())).collect(Collectors.toList());
list分组为map
Map<String, List<entity>> map = list.stream().collect(Collectors.groupingBy(e->e.getType()));
实体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);
前端传过来以逗号拼接id字符串转idList
Arrays.asList(((String)params.get("idList")).split(",")).stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
拼接
String idStr = list.stream().map(x -> x.getId().toString()).collect(Collectors.joining(","));
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);}); });
排序
//按某字段大小倒序排序 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());
去重
/** *整体去重 **/ list.stream().distinct().collect(Collectors.toList());/** *根据某几个属性去重 **/list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(p->p.getPatentName() + ";" + p.getLevel()))), ArrayList::new));
最小值
list.stream().min(Comparator.comparingDouble(IntegralTopListEntity::getIntegral)).orElseGet(null);
java8 steam常用操作相关推荐
- Java8 Stram常用操作
Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读. 流的操作类型主要分为两种: 1.中间操作: 一个流 ...
- java8 lambda表达式Stream对List常用操作总结
List最为java编程语音使用最频繁的数据结构之一,经常涉及到对List数据的各种处理,以前我们只能通过遍历的方式,自己去逐条处理,java8提供了Stream能够满足大部分日常对List的操作,如 ...
- 如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类
下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java8 ...
- Java8的流特性-常用操作(例)
2019独角兽企业重金招聘Python工程师标准>>> 描述: 流的一些常用操作 转自:https://lw900925.github.io/java/java8-stream-ap ...
- Java基础学习总结(132)——Java8 Stream流操作学习总结
传统的数据处理都是用循环来解决,而不是像搜索数据库那样有具体的搜索语句,而Java8的Stream提供了很好的方案,往往一行就搞定了,而且Stream还可以链式操作,一行代码实现多个循环的功能,代码风 ...
- Java8 Stream流操作在用户系统中的妙用
在做目前这个项目的时候,发现以前有一个筛选的需求,老程序员是这么做的,先请求Http服务器得到一长串json数据,大概用A4纸打了40多页那么多,然后将这些对象写入到sqlite数据库中,再用数据库查 ...
- TensorFlow常用操作:代码示例
1,定义矩阵代码示例: import tensorflow as tftf.zeros([3,4]) #定义3行4列元素均为0的矩阵tensor=tf.constant([1,2,3,4])#定义一维 ...
- Ubuntu 常用操作
Ubuntu常用操作 外观操作 修改应用icon图标 终端美化 内存管理 内存查询 分区管理 日志清理 操作执行 自动执行多条命令 外观操作 修改应用icon图标 在/usr/share/applic ...
- IOS沙盒Files目录说明和常用操作
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
最新文章
- Java进阶之自动拆箱与自动装箱
- C++11中std::shared_future的使用
- 苹果的浏览器safari无法识别 2016-1-1这样的日期,会返回Invalid Date
- python3.6.1安装教程-Linux下python3.6.1环境配置教程
- hdu 4676 Sum Of Gcd 莫队+phi反演
- vue 本地环境API代理设置和解决跨域
- 神经网络初始化trick:大神何凯明教你如何训练网络!
- 当前可用的喜马拉雅专辑下载器
- MacBook安装wget几种方式
- 关于Zipf定律的理解和python实现
- Python硬件编程实战------书评
- 医药电商平台解决方案
- 期货期权希腊字母与场景模拟
- 怎么设计制作简洁实用的App交互界面
- JAVA编程基础实验
- 线程池在美团的最佳实践
- 故事与她用计算机打,「故事」他用笔和相机为警察“代言”!(856)
- Charles工具使用教程,以及注意事项。
- 【最小费用最大流】知识点讲解
- qt开发是使用QT creator 还是用VS+qt?