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));

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随机过程:指数分布、泊松过程、更新过程(renewal process)+大数定律

笔记主要基于中文版《应用随机过程 Introduction to Probability Models 》(Sheldon M. Ross)&#xff0c;只有非常少的一部分是我自己的注解。写这个笔记的目的是自己复习用&#xff0c;阅读需要一定的微积分和概率论基础。本人为初学者&#xff0c;且全部为自学&#xff0c;如…

【渝粤题库】国家开放大学2021春2072人文社会科学基础(A)答案

试卷代号&#xff1a;2072 2 0 2 1年春季学期期末统一考试 人文社会科学基础(A) 试题答案及评分标准&#xff08;开卷&#xff09; &#xff08;供参考&#xff09; 2021年7月 一、名词解释&#xff08;共3道题&#xff0c;每题10分&#xff0c;共30分&#xff09; 1&#xff0…

接受拒绝采样(Acceptance-Rejection Sampling)

我们所说的抽样&#xff0c;其实是指从一个概率分布中生成观察值&#xff08;observations&#xff09;的方法。而这个分布通常是由其概率密度函数&#xff08;PDF&#xff09;来表示的。而且&#xff0c; 即使在已知PDF的情况下&#xff0c;让计算机自动生成观测值也不是一件容…

gradle文件不识别_识别Gradle约定

gradle文件不识别通过约定进行配置具有许多优点&#xff0c;尤其是在简洁方面&#xff0c;因为开发人员不需要显式配置通过约定隐式配置的内容。 但是&#xff0c;在利用约定进行配置时&#xff0c;需要注意这些约定。 这些约定可能已记录在案&#xff0c;但是当我可以编程方式…

Telesat、OneWeb及SpaceX三个全球宽带低轨卫星星座系统的技术对比

编者按&#xff1a;本文来自微信公众号“卫星与网络”&#xff08;ID&#xff1a;satnetdy&#xff09;&#xff0c;作者Inigo del Portilloa,*, Bruce G. Cameronb, Edward F. Crawleyc&#xff0c;编译 刘帅军、胡月梅&#xff08;中科院软件所&#xff09;&#xff0c;36氪经…

腾讯人均每月薪酬成本超8万元,员工总数首次超10万

11月10日&#xff0c;腾讯在23岁“生日”即将到来之际发布2021年第三季度业绩报告。财报显示&#xff0c;第三季度腾讯总收入为人民币1424亿元&#xff08;220亿美元 &#xff09;&#xff0c;同比增长13%&#xff1b;净利润(Non-IFRS&#xff09;317.5亿元&#xff0c;同比减少…

Spring State Machine:它是什么,您需要它吗?

状态机是基于有限状态的计算模型 &#xff0c;正如Wikipedia非常明确地说的那样。 通常&#xff0c;工作流会与状态一起使用&#xff0c;这意味着您不能仅从任何状态进入任何其他状态&#xff1a;应遵循一些规则。 这些状态之间的转换受规则限制。 Spring框架具有一个称为Spri…

【渝粤题库】国家开放大学2021春2097民法学(1)题目

试卷代号&#xff1a;2097 2021年春季学期期末统一考试 民法学(1) 试题 2021年7月 一、单项选择题&#xff08;每小题有四个备选答案&#xff0c;有一个正确的&#xff0c;请将正确答案的序号填在题干的括号内。每小题3分&#xff0c;共15分&#xff09; 1.我国法律规定&#x…

信关站、关口站、earth station、gatway

卫星通信系统上行站一般建设在电信港里&#xff08;teleport&#xff09;里&#xff0c;这种上行站规模庞大&#xff0c;一般称为earth station&#xff0c;他是通过SCPC, VSAT或者MESH等多种卫星通讯系统为用户提供服务的核心站点&#xff0c;一般我们称为主站。远端用户使用的…

【渝粤题库】国家开放大学2021春2542行政组织学题目

试卷代号&#xff1a;2542 2021年春季学期期末统一考试 行政组织学试题 2021年7月 一、单项选择题&#xff08;每小题2分&#xff0c;共10分&#xff0c;每小题只有一项答案正确&#xff0c;请将正确答案的序号填在括号内&#xff09; 1.规范而言&#xff0c;行政组织是追求( )…

低轨卫星通信系统发展综述

最近几年低轨移动通信领域风起云涌&#xff0c;Iridium、OneWeb、Boeing、SpaceX 这些商业航天的 独角兽 都先后实施或宣布自己在这一领域雄心勃勃的计划。 通信、导航和遥感是卫星应用领域的三驾马车&#xff0c;简称 通导遥。鉴于任务特性&#xff0c;通信卫星和导航卫星通常…

【渝粤题库】国家开放大学2021春1425调剂学(本)题目

试卷代号&#xff1a;1425 2021年春季学期期末统一考试 调剂学&#xff08;本&#xff09; 试题 2021年7月 一、单项选择题&#xff08;每题2分&#xff0c;共60分&#xff09; 1.以下名词的英文缩写不正确的是&#xff08; &#xff09;。 A.世界卫生组织WHO B.中国药学会医院…

【渝粤题库】国家开放大学2021春2109刑事诉讼法学题目

试卷代号&#xff1a;2109 2021年春季学期期末统一考试 刑事诉讼法学 试题 2021年7月 一、单项选择题&#xff08;每题1分&#xff0c;共10分&#xff0c;每题只有一项答案正确&#xff0c;请将正确答案的序号填在括号内&#xff09; 1_在我国刑事诉讼中&#xff0c;犯罪嫌疑人…

【渝粤题库】国家开放大学2021春2180办公室管理题目

试卷代号&#xff1a;2180 2021年春季学期期末统一考试 办公室管理 试题 2021年7月 一、单项选择题&#xff08;请将正确答案的字母序号填在括号内&#xff0c;每小题3分&#xff0c;共15分&#xff09; 1.加强对办公用品的库存控制与监督&#xff0c;要求保证进货卡、库存卡和…

java运行时参数_运行时的Java 8参数名称

java运行时参数Java 8将引入一种更容易的方法来发现方法和构造函数的参数名称。 在Java 8之前&#xff0c;找到参数名称的方法是在编译阶段打开调试符号&#xff0c;这会在生成的类文件中添加有关参数名称的元信息&#xff0c;然后提取复杂的信息&#xff0c;需要处理字节码。…

天地一体化信息网络发展与拟态技术应用构想

天地一体化信息网络发展与拟态技术应用构想 2019-07-20 08:00 作者: 梁浩, 陈福才, 季新生, 吕平, 高彦钊 国家数字交换系统工程技术研究中心 摘要: 天地一体化信息网络是国家面向2030的重大科技工程, 现有的基础架构及由此构建的技术体系在其节点高性能处理、网络高效互联…

【渝粤题库】国家开放大学2021春2224物业管理法规题目

试卷代号&#xff1a;2224 2021年春季学期期末统一考试 物业管理法规 试题&#xff08;开卷&#xff09; 2021年7月 一、选择题&#xff08;在所给出的四个选择项中选出一个以上的正确答案&#xff0c;然后将其序号填写在题中的括号内。少选、多选、错选均不得分。每小题4分&am…

【渝粤题库】国家开放大学2021春2247社会工作政策法规题目

试卷代号&#xff1a;2247 2021年春季学期期末统一考试 社会工作政策法规 试题 2021年7月 一、单项选择题&#xff08;每题2分&#xff0c;共20分&#xff09; 1-社会工作服务购买的主体是( )。 A.国家 B.社会 C.社区 D.政府 2.夫妻双方自愿、并就离婚的相关问题的处理达成了合…

创建您的第一个servlet

在本教程中&#xff0c;我们将学习如何使用Servlet创建非常基本的Web应用程序。 Servlet是一类&#xff0c;扩展了服务器拦截和响应传入请求的功能。 Servlet是一个Web组件&#xff0c;可在服务器上进行编写&#xff0c;构建和部署&#xff0c;以创建动态Web页面。 首先&…

【渝粤题库】国家开放大学2021春2332高等数学基础题目

试卷代号&#xff1a;2332 2021年春季学期期末统一考试 高等数学基础 试题 2021年7月 导数基本公式&#xff1a; 积分基本公式&#xff1a; &#xff08;c&#xff09;′0 (xa)′axa-1 &#xff08;ax&#xff09;′axlna(a&#xff1e;0且a≠1) (ex)′ex (logax)′ (lnx)′ (…