lambda遍历list集合
jdk1.8新增lamda表达式Stream流,数据处理方式
IntStream,LongStream,DoubleStream想了解,自己百度,大概就是stream下的原始流类
Stream 和parallelStream 流区别
1.Stream流线程安全,串行单线程运行,相对运行慢,使用forEach()方法,遍历有序。
parallelStream collection中流方法 线程不安全,并行多线程,相对较快,
使用forEach()方法,遍历无序,调用Stream中forEachOrdered()方法,遍历有序。
例:list.parallelStream().forEachOrdered(param -> {
param.setDjztStr(CommonUtil.valBystatus(param.getDjzt()));
});
list为集合
封装的类 import static java.util.stream.Collectors.*;
2.Stream 各种方法,去重 distinct() 去重;collect(Collectors.toList())。封装成集合
- Comparator stream下的类
可以用Comparator.comparing
2.Optional 解决空指针的类
例:Optional userOp= wxWlLldMxs.stream().max(Comparator.comparing(WxWlLldMx::getDj));
WxWlLldMx maxDj = userOp.get();
3.sort排序
List sortedList = list.stream().sorted((o1,o2)->o1.getAge()-o2.getAge()).collect(Collectors.toList());
4.map() 获取某一个元素
例: List mapList1 = list.stream().map(Person::getName).collect(Collectors.toList());
这种写法解决重复键报错问题,但不能解决值为空报错问题
Map<String, Object> map = list.stream().collect(Collectors.toMap(User::getName,User::getAge, (oldValue,newValue) -> oldValue, HashMap::new));
map.forEach((k,v)->{
System.out.println(k+""+v);
});
解决map空指针问题
Map<String, Object> map = list.stream().collect(Collectors.toMap(User::getName,e->Optional.ofNullable(e.getAge()).orElse(1), (oldValue,newValue) -> oldValue, HashMap::new));
5.filter 过滤 count()数量
List new ArrayList();
long count = strings.stream().filter(string -> string.isEmpty()).count();
6.limit() 获取流数量- mapToInt 将Intger转换int,summaryStatistics()理解为统计类
getAverage()平均数,getMax()最大,getMine()最小,getSum()和
import java.util.IntSummaryStatistics;
IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();
3.Collectors类方法使用与Stream一起使用
0.Collectors.joining(",") 拼接字符串
1.Collectors.toList 集合
2.Collectors.toSet set 集合
3.toCollection 封装到指定新集合
例:List result = givenList.stream().collect(toCollection(LinkedList::new))
4.java8排序
例: Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
lambda根据某个字段去重
List<Person> personList = new ArrayList<>();personList.add(new Person("one", 10));personList.add(new Person("two", 20));personList.add(new Person("three", 30));//这两的name值重复personList.add(new Person("four", 40));personList.add(new Person("four", 45));System.out.println("利用Collectors.toMap去重:");//利用Collectors.toMap去重personList.stream().collect(Collectors.toMap(Person::getName, Function.identity(), (oldValue, newValue) -> oldValue)).values().stream().forEach(System.out::println); //打印
lambda遍历list集合相关推荐
- 1.9 Lambda表达式遍历Collection集合
Java使用Lambda表达式遍历Collection集合 Java 8 为 Iterable 接口新增了一个 forEach(Consumer action) 默认方法,该方法所需参数的类型是一个函 ...
- Iterator(迭代器)遍历Collection集合元素
Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Map 系列的集合不一样,Collection 和 Map 系列 ...
- Java之五种遍历Map集合的方式
摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历. 在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历.这篇文章主要给大家介 ...
- Java中遍历Map集合的5种方式总结
这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 方式一 通过Map.keySet使用iterator遍历 ...
- Collection集合--遍历List集合的五种方法
一.总结 遍历List集合的方法 方法描述 方法一 由迭代器Iterator进行遍历 方法二 由集合定义时的泛型遍历for(T t:list) 方法三 根据索引遍历for(int i = 0;i &l ...
- 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )
文章目录 一.使用 map 集合的 find 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 find 方法遍历 map 集合 使用 map 集合的 find 方法遍历 map 集合 ...
- 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )
文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...
- 【Groovy】集合遍历 ( 调用集合的 every 方法判定集合中的所有元素是否符合闭包规则 | =~ 运算符等价于 contains 函数 | 代码示例 )
文章目录 一.调用集合的 every 方法判定集合中的所有元素是否符合闭包规则 二.代码示例 一.调用集合的 every 方法判定集合中的所有元素是否符合闭包规则 集合的 every 方法 , 用于 ...
- 【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
文章目录 一.使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 1.闭包中使用 == 作为 findAll 方法的查找匹配条件 2.闭包中使用 is 作为 findAll 方法的查找匹 ...
最新文章
- gateway动态路由_spring-cloud-gateway简介
- sqlserver 性能问题
- 多平台数据库客户端工具DBeaver
- Matlab实用程序--图形应用-交互式图形
- display(block,inline,none),visibility(visible,hidden)之间的关系及区别(不同)
- 计算机如何玩二十四点游戏,数学二十四点游戏有什么技巧吗?
- Windows Embedded Standard 7 剪裁随笔
- SnapKit 源码解读(一):Extensions
- eclipse下androidannotations开发环境搭建
- datagrid嵌套使用ajax,关于easyui datagrid多层嵌套动态合并列的问题
- cis系统服务器,基于客户端/服务器模式头影测量信息系统(CIS)影像测量模块的开发...
- 算法——最好理解的动态规划之01背包详解(看完这篇再不敢说自己不知道01背包算法!!!)
- python画美女代码_3分钟画字符画跟女神表白,利用python字符串、列表方法
- 《系统集成项目管理》第九章 项目成本管理
- CentOS导入CA证书
- Kd-tree原理与实现
- 【完整记录】使用kubeadm部署kubernetes集群踩坑记录及解决方案
- 抽屉实现评论数据结构及评论内容显示示例
- 猿来小课Java视频教程讲师浅谈JAVA体系结构
- Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures
热门文章
- 数据库设计(一):ER模型概念介绍
- 【Paper】WISDM:The Impact of Personalization on Smartphone-Based Activity Recognition
- 将android转换成ios,王者荣耀安卓可以转到苹果吗 ios怎么转安卓系统
- Hyaluronate-Thiol,HA-Thiol,HA-SH,巯基修饰透明质酸, 巯基功能化透明质酸
- SAP中由于物料主数据特殊采购类未维护寄售导致成本核算报错问题
- 【设计模式】-创造篇-原型
- 要强的董经贵,与跳不出两轮电动车品质“陷阱”的雅迪
- 金蝶钉钉对接方案介绍
- 业务流程管理(BPM)
- IBM LSF解决方案客户案例—— EDA三巨头之 Mentor Graphics(明导)