Stream 流中间操作

  • filter 筛选
  • limit 截断流
  • skip(n) 跳过元素
  • distinct 去重

filter 筛选

筛选:接收 Lambda ,从流中排除某些元素。return为true时,元素会被保留
eg:筛选出大于35的并且工资大于6000的。

public class StreamFilter {List<Employee> employees = new ArrayList<>();{employees.add(new Employee(1,"张三",20,8895.31));employees.add(new Employee(2,"张四",28,7894.34));employees.add(new Employee(3,"张柳",46,6895.37));employees.add(new Employee(66,"王一",54,5895.5));employees.add(new Employee(56,"李四",55,4895.8));employees.add(new Employee(89,"李十一",32,9895.354));employees.add(new Employee(546,"张十五",20,18895.37));employees.add(new Employee(43,"刘十六",43,28895.35));employees.add(new Employee(43,"刘十六",43,28895.35));}/*** 测试Stream的Filter方法* 接收 Lambda ,从流中排除某些元素*/@Testpublic void testStreamFilter() {Stream<Employee> employeeStream = employees.stream().filter(employee -> {//保留大于35的并且工资大于6000的return employee.getAge() > 35 && employee.getSalary()>6000;});employeeStream.forEach(System.out::println);}
}

result:

limit 截断流

截断:截断流,使其元素不超过给定数量
eg:limit(3)

    /*** 测试Stream的limit方法* 截断流,使其元素不超过给定数量*/@Testpublic void testStreamFilter() {Stream<Employee> employeeStream = employees.stream().limit(3);employeeStream.forEach(System.out::println);}

result:

skip(n) 跳过元素

跳过:skip(n)跳过元素
eg:跳过2个元素(使用场景:进行Excel导入时,第一行或者前两行通常是表头不需要操作)

    /*** 测试Stream的Skip方法* 跳过元素,返回一个舍弃了前n个元素的流;若流中元素不足n个,则返回一个空流;与 limit(n) 互补* 从第二个元素得到两个元素*/@Testpublic void testStreamFilter() {Stream<Employee> employeeStream = employees.stream().skip(2);employeeStream.forEach(System.out::println);}

result:

distinct 去重

筛选去重:通过流所生成的 hashCode()equals() 取除重复元素
eg:去除list中的重复项

    /*** 测试Stream的distinct方法* 筛选,通过流所生成的 hashCode() 与 equals() 取除重复元素* 去除重复项*/@Testpublic void testStreamFilter() {Stream<Employee> employeeStream = employees.stream().distinct();employeeStream.forEach(System.out::println);}

result:

Stream流学习(一) filter limit skip(n) distinct 中间操作相关推荐

  1. Stream流学习记录

    1. 创建流 单列集合: 集合对象.stream() List<Author> authors =new ArrayList<>();Stream<Author> ...

  2. Stream流学习(二)map方法

    Stream流的map方法 map()接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素 eg:将employees中Employee的名字汇总成一个String集合 List ...

  3. 【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  4. Stream流学习(三)sorted方法

    sorted方法 1. `sorted`自然排序方法 2. `sorted(Comparator c)`定制排序方法 3. 按照对象的某个属性排序 初始化集合数据: List<Employee& ...

  5. Stream流之最全学习总结

    Stream流是java8的一大亮点,它与java.io包里面的InputStream和OutputStream是完全不同的概念. java8中的Stream流是对集合(Collections)和数组 ...

  6. Lambda表达式接口更新方法引用函数式接口Stream流

    Lambda表达式&接口更新&方法引用&函数式接口&Stream流 Lambda 1.程序启动三种不同的表现形式 2.Lambda表达式的标准格式 3.练习 Lambd ...

  7. 24.1 传统集合的多步遍历代码、Stream流更优写法与stream、forEach、filter、count、limit、skip、concat方法、静态方法:tream.of()

    目录 1 传统集合的多步遍历代码 2 Stream的更优写法 3 Stream流 3.1 Stream流:获取流 列:单列集合.双列集合.数组获取stream流 3.2 Stream流中的常用方法:f ...

  8. Java函数式编程学习——Stream流

    目录 概述 案例数据准备 1. 常用操作 2. 中间操作 filter map distinct sorted limit skip flatMap 3. 终结操作 foreach count max ...

  9. java day24【Stream流、方法引用】

    第一章 Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"IO流"呢?在Java 8中,得益于Lambda所带来的 ...

最新文章

  1. 牛!开创交互式电脑绘图先河,虚拟现实之父传奇
  2. ecs 云服务器 管理控制台_阿里云ECS服务器监控资源使用情况
  3. 自动点击屏幕脚本代码_原来这么简单,一分钟学会引流脚本
  4. 如何修复XML内存“泄漏”
  5. GitHub下载代码方法
  6. linux常用命令速查手册PDF下载
  7. idea怎么调试jsp页面_JSP+Servlet+C3P0+Mysql实现的YCU movies电影网站
  8. USACO_Prime Cryptarithm
  9. python knn模型_kNN模型(Python3.x环境)
  10. Java| Javadoc生成Java帮助文档
  11. 万字讲解WiFi为何物
  12. 基于某电信运营数据的精准营销分析
  13. 西方哲学史的主要发展阶段
  14. Android keeps stopping
  15. CHROME扩展笔记之webRequest·图片拦截
  16. Echarts饼图实现颜色渐变
  17. 3阶魔方阵c语言算法,3阶魔方阵的算法
  18. 从乌镇互联网大会,了解未来技术发展趋势
  19. windows和ubuntu双系统,ubuntu下硬盘变成只读状态,无法粘贴文件的有效解决方法
  20. 《实用多媒体技术》课程习题及解答

热门文章

  1. CUPS ~ 通用Unix打印系统
  2. 漫谈反问题及一些题外话
  3. Jquery 组 tbale表格滚动条
  4. 利器而善事——记《软件工程(C编码实践篇)》学习感悟
  5. IIS_WPG用户组
  6. 第01课:什么是微服务?
  7. 欢迎加入我们的“群”组织
  8. 6.26 考研又锤子了
  9. confluence 编辑器这次没有加载_介绍10款平时项目里使用比较多的在线编辑器,有需要可以收藏起来
  10. C语言典型题——数组左旋右旋