java 8 stream_Java 8 Stream示例

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

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

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

相关文章

html怎么设置图片隐藏,css3如何隐藏图片?

css3隐藏图片的方法&#xff1a;1、为图片元素设置display:none;样式来隐藏。2、使用visibility:hidden;样式隐藏图片。3、使用opacity:0;样式通过设置图片完全透明来设置图片不可见。css中可以使用下面几种样式隐藏图片&#xff1a;display:none;visibility:hidden;opacity:0;…

IntelliJ IDEA修改项目的根目录名称_修改包目录的名称_修改模块名称_修改项目名称

文章目录修改项目根目录的名称修改包目录的名称模块重命名修改了项目根目录后&#xff0c;必须删除项目和 .idea 文件&#xff0c;重新导入&#xff08;重点&#xff09;新版本的 IDEA 取消了 Import Project 入口修改项目根目录的名称 如果仅仅修改项目的名称&#xff0c;而不…

容器rocker_用Rocker制作模板

容器rocker在本文中&#xff0c;我们将快速介绍Rocker &#xff0c;这是一个静态类型化的快速Java 8模板引擎。 必需的依赖项 要开始使用Rocker&#xff0c;我们需要在项目中添加以下依赖项&#xff1a; <dependency><groupId>com.fizzed</groupId><art…

android 开源 示波器,上个老外的开源虚拟示波器

这个老贵~&#xff01;Price USD (US Dollar) $ 1595.00Network BitScope 442 ( BS442N )(原文件名:bs445n.png)(原文件名:bs440e.jpg)BS442NBS325NBS325UBS100UBS50UThe correct appearance of this website is only visible in graphical browsers that support web standard…

Java子类的成员方法可以直接调用父类的成员方法和成员变量

public class Teacher extends Employee {public static void main(String[] args) {}public void method() {super.method(); // 可以直接调父类的成员方法super.name; // 访问父类的成员变量System.out.println("子类方法执行&#xff01;");} }我的理解&#xff1…

java类似sizeof_如何用Java编写类似C的Sizeof函数

java类似sizeof如果您刚开始学习Java并且是C语言背景&#xff0c;那么您可能已经注意到Java和C编程语言之间存在一些差异&#xff0c;例如String是Java中的对象&#xff0c;而不是NULL终止的字符数组。 同样&#xff0c;Java中没有sizeof&#xff08;&#xff09;运算符。 所有…

html文件压缩成gzip,前端性能优化成神之路-HTTP压缩开启gzip

什么是HTTP压缩cssHTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法&#xff0c;好比gzip来压缩HTML,Javascript, CSS文件。 能大大减小网络传输的数据量&#xff0c;提升了用户显示网页的速度。固然&#xff0c;同时会增长一点点服…

Java中父类的静态变量和静态方法的继承问题

1.普通父类的静态变量和方法&#xff0c;可以通过子类的名称访问和调用 2.普通父类的静态变量和方法&#xff0c;可以通过子类的实例对象访问和调用 3.抽象父类的静态变量和方法&#xff0c;可以通过具体子类的名称访问和调用 4.抽象父类的静态变量和方法&#xff0c;可以通过具…

jdk10与jdk9的区别_JDK 8与JDK 10:三元/拆箱的区别

jdk10与jdk9的区别最近的Nicolai Parlog &#xff08; nipafx &#xff09; 鸣叫引起了我的注意&#xff0c;因为它引用了一个有趣的StackOverflow讨论 &#xff0c;该讨论涉及JDK 8和JDK 10之间的行为更改&#xff0c;并询问“为什么&#xff1f;” SerCe 在StackOverflow线程…

Java的多态形式中,如何访问成员变量和调用成员方法

文章目录简介演示案例简介 多态&#xff0c;多态使 Java 更有生命和鲜活起来。多态指子类对象可以直接赋值给父类变量&#xff0c;但在运行时依然表现出子类的特征。Java 引用变量有两种类型&#xff0c;分别是编译时类型和运行时类型&#xff0c;编译时类型由声明类型决定&am…

cobol和java_Java正成为COBOL的一部分-它将成为COBOL的一部分吗?

cobol和java任何从大学&#xff0c;技术学校或社区学院毕业的计算机科学专业都接受过培训。 每个身材高大的公司都使用该语言&#xff0c;并拥有一批具备此能力的程序员。 通用语言可以推动业务发展。 1985年是COBOL。今天是Java。 尽管存在差异&#xff0c;但是这两种语言在轨…

android 6.0 dm-verity技术,Android 7.0安全性大幅提升,要求严格强制执行验证启动

在我们针对 Android 7.0 对 dm-verity 所做的更改中&#xff0c;我们使用了一个称为交错的技术&#xff0c;利用该技术&#xff0c;我们不仅可以从丢失的整个 4 KiB 源块恢复数据&#xff0c;还可从多个连续块恢复数据&#xff0c;与此同时&#xff0c;与朴素实现相比&#xff…

Java的final关键字

1.abstract 和 final 不能同时存在&#xff0c;因为自相矛盾&#xff0c;abstract 表示抽象&#xff0c;所以 abstract 修饰的类必须被实现才有意义&#xff0c;而 abstract 修饰的方法必须被覆盖重写&#xff08;即实现&#xff09;才有意义&#xff1b;但是 final 却表示最终…

zuul过滤器_Zuul 2 –样本过滤器

zuul过滤器Zuul 2终于开源了 。 我第一次听到Zuul 2年Spring由米奇科恩一个2016的讲就是可以在这里找到 &#xff0c;这是好事&#xff0c;终于可以用它玩。 为了快速实现Zuul 2之类的网关的目的–网关提供了微服务生态系统的切入点。 由于所有客户请求都是通过网关路由的&…

Java泛型的学习

文章目录前言泛型接口定义实现类时指定泛型具体的数据类型定义实现类时&#xff0c;泛型与接口相同泛型接口的示例代码泛型类演示代码泛型方法演示代码泛型的通配符泛型的区间限定泛型应用泛型性能注意事项前言 泛型的本质就是将数据类型参数化, 普通方法的参数值可以变&#…

html2canvas截取图片不完整,html2canvas关于图片不能一般截取

题目起首说说遇到了什么题目。起首有这么一个需求。须要前端依据后端传过来数据&#xff0c;动态的天生图片。图片中的案牍、背景图片、用户头像全部都是经由过程后端的接口猎取。然则运用 html2canvas 天生的canvas有些图片胜利的在canvas里天生了。然则有些图片无论如何都显现…

shebang_Shebang来Java了吗?

shebang尽管添加对Unix风格的shebang &#xff08; #! &#xff09;的支持从来不是 JEP 330 [“启动单文件源代码程序”]的主要目标&#xff0c;但围绕JEP 330“单个文件源程序”的潜在功能存在一些问题。为了支持Unix风格的shebang &#xff0c;在OpenJDK jdk-dev邮件列表上引…

beetl模板引擎之自定义html标签,Beetl模板引擎自定义分页标签

1)在beetl.properties文件中配置tagTAG.page xx.xx.xx.xx.PageTag2)在模板中引用标签3)增加标签类继承自GeneralVarTagBinding类import org.beetl.core.Context;import org.beetl.core.GeneralVarTagBinding;import org.beetl.core.statement.Statement;import java.io.IOExce…

Java中常用集合类对比_集合比较

集合实现类集合接口有序性唯一性线程安全空值性能排序数据结构索引应用场景备注ArrayListList有序可重复不安全允许空值查找效率高&#xff0c;添加/删除效率低使用 Collections.sort() 传入ArrayList&#xff0c;会采用默认的方式进行排序&#xff08;字典序&#xff09;。自己…

java nio教程_Java NIO教程

java nio教程1.简介 Java NIO是Java 1.4引入的一个库。 自从Java NIO推出以来&#xff0c;它提供了另一种方法来处理I / O和网络事务。 它被认为是Java网络和Java IO库的替代方法。 开发Java NIO的目的是使输入和输出的事务异步和非阻塞。 阻塞和非阻塞IO的概念将在后面的部分…