java 8 stream

这篇文章将帮助您了解Java 8中一些重要且经常使用的Stream操作,这使您使用Java编程变得容易。

让我们以传统示例为例,“员工和部门”。

public class Employee {private String name;private Integer age;private String city;private Department department;public Employee(String name, Integer age, String city, Department department) {this.name = name;this.age = age;this.city = city;this.department = department;}// getters and setters.}
public class Department {private String departmentName;private Integer noOfEmployees;public Department(String departmentName, Integer noOfEmployees) {this.departmentName = departmentName;this.noOfEmployees = noOfEmployees;}// getters and setters
}

我将按如下所示设置一些示例数据,以便向您展示Java 8 Stream接口的一些重要功能。 我们有四个部门,以及来自这些部门的一组员工。

Department account = new Department("Account", 75); Department hr = new Department("HR", 50);Department ops = new Department("OP", 25);Department tech = new Department("Tech", 150);          List<Employee> employeeList = Arrays.asList(new  Employee("David", 32, "Matara", account), new  Employee("Brayan", 25, "Galle", hr),new  Employee("JoAnne", 45, "Negombo", ops),new  Employee("Jake", 65, "Galle", hr),new  Employee("Brent", 55, "Matara", hr),new  Employee("Allice", 23, "Matara", ops),new  Employee("Austin", 30, "Negombo", tech),new  Employee("Gerry", 29, "Matara", tech),new  Employee("Scote", 20, "Negombo", ops),new  Employee("Branden", 32, "Matara", account),new  Employee("Iflias", 31, "Galle", hr));

查找所有居住在“马塔拉”城市的员工,按姓名对他们进行排序,然后打印员工姓名。

employeeList.stream().filter(e -> e.getCity().equalsIgnoreCase("Matara")).sorted(Comparator.comparing(Employee::getName)).forEach(e -> System.out.println(e.getName()));

查找员工工作的不同部门名称。

employeeList.stream().map(e -> e.getDepartment().getDepartmentName()).distinct().forEach(System.out::println);

查找这些员工所在的部门名称,该部门的员工人数超过50。

employeeList.stream().map(Employee::getDepartment).filter(d -> d.getNoOfEmployees() > 50).distinct().forEach(d -> System.out.println(d.getDepartmentName()));

创建一个逗号分隔的部门名称字符串,按字母顺序排序。

String s = employeeList.stream().map(e -> e.getDepartment().getDepartmentName()).distinct().sorted().reduce("", (a, b) -> (a + "," + b));
System.out.println(s);

人力资源部有员工吗?

if (employeeList.stream().anyMatch(e -> e.getDepartment().getDepartmentName().equalsIgnoreCase("HR"))) { System.out.println("Found employees frm HR department");
}

打印在会计部门工作的所有雇员的姓名。

employeeList.stream().filter(e -> e.getDepartment().getDepartmentName().equalsIgnoreCase("Account")).map(Employee::getName).forEach(System.out::println);

所有部门的最高员工人数是多少?

employeeList.stream().map(e -> e.getDepartment().getNoOfEmployees()).reduce(Integer::max).ifPresent(System.out::print);

查找员工人数最多的部门。

employeeList.stream().map(Employee::getDepartment).reduce( (d1, d2) -> d1.getNoOfEmployees() > d2.getNoOfEmployees() ? d1 : d2).ifPresent(d -> System.out.println(d.getDepartmentName()));

使用max()方法可以完成以下相同操作。

employeeList.stream().map(Employee::getDepartment).max(Comparator.comparing(Department::getNoOfEmployees)).ifPresent(d -> System.out.println(d.getDepartmentName()));

查找所有部门的员工总数。

employeeList.stream().map(e -> e.getDepartment().getNoOfEmployees()).distinct().reduce(Integer::sum).ifPresent(System.out::println);

翻译自: https://www.javacodegeeks.com/2018/07/java-8-stream-examples.html

java 8 stream

java 8 stream_Java 8 Stream示例相关推荐

  1. java.util.stream_java.util.stream.Stream 接口中的常用方法

    流模型的操作很丰富,下面介绍一些常用的API.这些方法可以被分成两种: 延迟方法 返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用.(除了终结方法外,其余方 法均为延迟方法.) 终 ...

  2. 10个Java 8 Lambda表达式经典示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...

  3. Java使用Optional与Stream来取代if判空逻辑(JDK8以上)

    Java使用Optional与Stream来取代if判空逻辑(JDK8以上) 通过本文你可以用非常简短的代码替代业务逻辑中的判null校验,并且很容易的在出现空指针的时候进行打日志或其他操作. 注:如 ...

  4. Java 8系列之Stream中万能的reduce

    Stream系列: Java 8系列之Stream的基本语法详解 Java 8系列之Stream的强大工具Collector Java 8系列之重构和定制收集器 Java 8系列之Stream中万能的 ...

  5. Java 8系列之Stream的强大工具Collector

    Stream系列: Java 8系列之Stream的基本语法详解 Java 8系列之Stream的强大工具Collector Java 8系列之重构和定制收集器 Java 8系列之Stream中万能的 ...

  6. Java IOUtils.copy方法代码示例(亲测)

    本文整理汇总了Java中org.apache.commons.io.IOUtils.copy方法的典型用法代码示例.如果您正苦于以下问题:Java IOUtils.copy方法的具体用法?Java I ...

  7. 在Java 8中使用Stream API列出ZIP文件的内容

    在Java 8 java.util.zip.ZipFile配备了stream方法,该方法可以非常轻松地浏览ZIP文件条目. 在此博客文章中,我将展示许多示例,这些示例显示了我们可以如何快速浏览ZIP文 ...

  8. Java SE 9:Stream API的改进

    发表简要目录: (Post Brief Table of Content:) Introduction介绍 Java SE 8: Stream API BasicsJava SE 8:Stream A ...

  9. java组合与继承始示例_Java 8特性与示例

    java组合与继承始示例 Java 8 was released on 18th March 2014, so it's high time to look into Java 8 Features. ...

最新文章

  1. apt-get常用命令
  2. KlayGE 4.0中Deferred Rendering的改进(五)完结篇:Post process
  3. java捕获定时器抛出的异常_详细了解Java中定时器Timer的使用及缺陷分析
  4. oracle怎么导出筛选后的数据,ORACLE,筛选单字段不重复的记录,保留其他字段....
  5. AOP 中必须明白的概念-切入点(Pointcut)
  6. 一个公网ip多少钱_一个丛书书号多少钱
  7. 利用Gtmetrix检测你的网站载入速度!
  8. 时间管理类APP的Demo版本
  9. C#递归拷贝文件夹下文件以及文件夹
  10. 计算机毕业设计Java校园一卡通管理系统(源码+系统+mysql数据库+Lw文档)
  11. 《金字塔原理》学习笔记 | 第4篇—演示的逻辑
  12. 浏览器cookie数量与大小限制
  13. 树莓派centos踩坑之旅,解决每次重启都需要route add才能有网络
  14. 【鸿蒙】HarmonyOS认证学习资料整理
  15. 图神经网络学习记录:《图神经网络综述:模型与应用》
  16. USB隨身碟格式化工具程式—HPUSBFW
  17. 计算机主板上的cmos芯片的主要用途是,cmos芯片的作用及主要用途
  18. 新闻集团下周将推iPad报纸 网站屏蔽搜索引擎
  19. Windows 11 win to go 安装硬盘无法启动解决方法之一
  20. 前端性能优化之图片优化

热门文章

  1. 牛客网【每日一题】5月18日 「土」秘法地震
  2. nssl1467-U【差分】
  3. U94222-循环往复【tarjan,DAGdp】
  4. jzoj3850-Fibonacci进制【斐波那契倍增】
  5. P1373-小a和uim之大逃离【dp】
  6. jzoj4224-食物【多重背包】
  7. GYM101002C - Greetings!
  8. SpringBoot2.1.9 Mybatis多数据源配置
  9. tomcat与apache的面试题
  10. Eclipse中看不到jsp的页面效果