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())。封装成集合

  1. 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() 获取流数量
  2. 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. 1.9 Lambda表达式遍历Collection集合

    Java使用Lambda表达式遍历Collection集合 Java 8 为 Iterable 接口新增了一个 forEach(Consumer action) 默认方法,该方法所需参数的类型是一个函 ...

  2. Iterator(迭代器)遍历Collection集合元素

    Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Map 系列的集合不一样,Collection 和 Map 系列 ...

  3. Java之五种遍历Map集合的方式

    摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历. 在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历.这篇文章主要给大家介 ...

  4. Java中遍历Map集合的5种方式总结

    这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 方式一 通过Map.keySet使用iterator遍历 ...

  5. Collection集合--遍历List集合的五种方法

    一.总结 遍历List集合的方法 方法描述 方法一 由迭代器Iterator进行遍历 方法二 由集合定义时的泛型遍历for(T t:list) 方法三 根据索引遍历for(int i = 0;i &l ...

  6. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 find 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 find 方法遍历 map 集合 使用 map 集合的 find 方法遍历 map 集合 ...

  7. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...

  8. 【Groovy】集合遍历 ( 调用集合的 every 方法判定集合中的所有元素是否符合闭包规则 | =~ 运算符等价于 contains 函数 | 代码示例 )

    文章目录 一.调用集合的 every 方法判定集合中的所有元素是否符合闭包规则 二.代码示例 一.调用集合的 every 方法判定集合中的所有元素是否符合闭包规则 集合的 every 方法 , 用于 ...

  9. 【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )

    文章目录 一.使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 1.闭包中使用 == 作为 findAll 方法的查找匹配条件 2.闭包中使用 is 作为 findAll 方法的查找匹 ...

最新文章

  1. gateway动态路由_spring-cloud-gateway简介
  2. sqlserver 性能问题
  3. 多平台数据库客户端工具DBeaver
  4. Matlab实用程序--图形应用-交互式图形
  5. display(block,inline,none),visibility(visible,hidden)之间的关系及区别(不同)
  6. 计算机如何玩二十四点游戏,数学二十四点游戏有什么技巧吗?
  7. Windows Embedded Standard 7 剪裁随笔
  8. SnapKit 源码解读(一):Extensions
  9. eclipse下androidannotations开发环境搭建
  10. datagrid嵌套使用ajax,关于easyui datagrid多层嵌套动态合并列的问题
  11. cis系统服务器,基于客户端/服务器模式头影测量信息系统(CIS)影像测量模块的开发...
  12. 算法——最好理解的动态规划之01背包详解(看完这篇再不敢说自己不知道01背包算法!!!)
  13. python画美女代码_3分钟画字符画跟女神表白,利用python字符串、列表方法
  14. 《系统集成项目管理》第九章 项目成本管理
  15. CentOS导入CA证书
  16. Kd-tree原理与实现
  17. 【完整记录】使用kubeadm部署kubernetes集群踩坑记录及解决方案
  18. 抽屉实现评论数据结构及评论内容显示示例
  19. 猿来小课Java视频教程讲师浅谈JAVA体系结构
  20. Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures

热门文章

  1. 数据库设计(一):ER模型概念介绍
  2. 【Paper】WISDM:The Impact of Personalization on Smartphone-Based Activity Recognition
  3. 将android转换成ios,王者荣耀安卓可以转到苹果吗 ios怎么转安卓系统
  4. Hyaluronate-Thiol,HA-Thiol,HA-SH,巯基修饰透明质酸, 巯基功能化透明质酸
  5. SAP中由于物料主数据特殊采购类未维护寄售导致成本核算报错问题
  6. 【设计模式】-创造篇-原型
  7. 要强的董经贵,与跳不出两轮电动车品质“陷阱”的雅迪
  8. 金蝶钉钉对接方案介绍
  9. 业务流程管理(BPM)
  10. IBM LSF解决方案客户案例—— EDA三巨头之 Mentor Graphics(明导)