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 ...
最新文章
- verilog中有符号数运算
- 用loader.loadbytes直接load bitmapdata.getpixels产生的bytearray
- sublime配置随笔提示
- bootstrap 彈窗默認打開_Bootstrap 手册 07 - JS 组件篇
- java生成动态验证码_动态生成验证码案例
- 在.NET Core 中使用Quartz.NET
- 手机距离传感器坏了有什么影响_适合手机兼职的工作有什么影响吗
- Field 'CID' doesn't have a default value
- P5 MySQL数据类型和类型选择
- jquery prop('checked', true)解决attr('checked', true)不能选中radio问题
- NYOJ-111分数加减法
- python服务器查看文件更改记录,python 查看远程服务器上的文件
- 400一双的人工肌肉跑鞋,能否扩大鸿星尔克“科技牌”赢面?
- 权限提升-烂土豆dll劫持引号路径服务权限
- CAP、BASE理论
- 系统试运行报告是谁写的_家门口就能免费健康自检自测 延吉智慧健康驿站试运行 健康检测服务将惠及更多居民...
- Only no-arg methods may be annotated with @Scheduled 的解决方法
- android app 马甲包,关于Android多渠道打包和马甲包问题
- c语言把字符变成asc11值,PLC字符与数据之间如何进行转换?
- 机器学习吴恩达课程总结(一)
热门文章
- 解决 the generation has been cancelled because errors have been found by the check model
- fun函数是什么php,c语言fun函数有什么例题?_后端开发
- android3g运存,为什么iphoneX只有3G运存还比安卓的6G运存快?
- 关于帧间距 IFG技术的讨论
- 不用对 雷蛇影鲛终极版thx 耳机开启空间音效。
- RabbitMQ管理界面出现 Unacked 消息
- IntelliJ IDEA快捷键以及使用技巧
- 自由恋爱离婚率高.婚姻就是找匹配,无关形式
- 挖掘机哪家强?不找蓝翔找AI!
- 华为鸿蒙系统能继承王者荣耀吗,华为鸿蒙玩王者荣耀账号互通吗?华为鸿蒙玩王者荣耀会不会影响?...