博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 8流在另一个流_Java 8流图
阅读量:2533 次
发布时间:2019-05-11

本文共 4776 字,大约阅读时间需要 15 分钟。

java 8流在另一个流

Java 8 Stream map function can be used to perform some operation on all of it’s elements. map is an intermediate operation, so it returns Stream.

Java 8 Stream map函数可用于对其所有元素执行某些操作。 映射是一个中间操作,因此它返回Stream。

Java 8流图 (Java 8 Stream Map)

Below is the map method declared in Java 8 Stream interface.

以下是Java 8 Stream接口中声明的map方法。

Stream
map(Function
mapper);

Stream map method takes Function as argument that is a .

流映射方法将Function作为参数。

Let’s now look at some example where stream map method become useful.

现在让我们看一些流映射方法变得有用的示例。

Java Stream映射示例 (Java Stream map example)

Let’s assume we have a list of names and we want to find which of them are present in some Oracle database table. Now since Oracle is case sensitive, we can convert list of string to upper case and then at the database side we can use to_upper method with SQL query.

假设我们有一个名称列表,并且我们想查找在某些Oracle数据库表中存在的名称。 现在,由于Oracle是区分大小写的,因此我们可以将字符串列表转换为大写,然后在数据库端可以将to_upper方法用于SQL查询。

Usually before java 8, we can do it using for loop as shown below.

通常在Java 8之前,我们可以使用for循环来实现它,如下所示。

List
names = Arrays.asList("Pankaj", "amit", "DAVID");List
upperCaseNames = new ArrayList<>();for (String n : names) { upperCaseNames.add(n.toUpperCase());}// now send upperCaseNames for processing

We can do the same thing using java stream map function as shown below in a single line.

我们可以使用java流映射函数来完成相同的操作,如下所示。

upperCaseNames = names.stream().map(t -> t.toUpperCase()).collect(Collectors.toList());

We can also write it like below.

我们也可以像下面这样写。

upperCaseNames = names.stream().map(String::toUpperCase).collect(Collectors.toList());

带对象的Java Stream映射示例 (Java Stream map example with objects)

Now let’s look at more practical example of Stream map usage. We have an Emp class as below.

现在,让我们看一下流图用法的更实际示例。 我们有一个Emp类,如下所示。

package com.journaldev.examples;public class Emp {	private int id;	private String name;	private long salary;	private String designation;	public Emp(int i, String n, long s, String d) {		this.id = i;		this.name = n;		this.salary = s;		this.designation = d;	}	@Override	public String toString(){		return id+name+salary+designation;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public long getSalary() {		return salary;	}	public void setSalary(long salary) {		this.salary = salary;	}	public String getDesignation() {		return designation;	}	public void setDesignation(String designation) {		this.designation = designation;	}}

We have a method to get all the employees data. Now we want to pass employees data to HR system but we don’t want to disclose the salary. So we will have to use below code to process each employee and remove their salary.

我们有一种获取所有员工数据的方法。 现在我们想将员工数据传递到HR系统,但是我们不想透露薪水。 因此,我们将必须使用以下代码来处理每个员工并除去他们的薪水。

List
empForHR = new ArrayList<>(); for(Emp e : allEmpList){ Emp temp = new Emp(e.getId(),e.getName(),e.getSalary(),e.getDesignation()); temp.setSalary(0); empForHR.add(temp); }

Now using java 8 stream map function, we can do the same thing like below.

现在,使用Java 8流映射功能,我们可以像下面一样进行操作。

empForHR = allEmpList.stream().map(e -> {		e.setSalary(0L);		return e;	}).collect(Collectors.toList());

Below is the final program for java stream map example with object transformation.

以下是带有对象转换的java流映射示例的最终程序。

package com.journaldev.examples;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;public class JavaStreamMapExample {	public static void main(String[] args) {		List
allEmpList = getAllEmps(); System.out.println(allEmpList); List
empForHR = new ArrayList<>(); for(Emp e : allEmpList){ Emp temp = new Emp(e.getId(),e.getName(),e.getSalary(),e.getDesignation()); temp.setSalary(0); empForHR.add(temp); } System.out.println(empForHR); empForHR = allEmpList.stream().map(e -> { e.setSalary(0L); return e; }).collect(Collectors.toList()); System.out.println(empForHR); } private static List
getAllEmps() { List
el = new ArrayList<>(); Emp e1 = new Emp(1, "Pankaj", 100L, "SE"); el.add(e1); Emp e2 = new Emp(2, "David", 200L, "QE"); el.add(e2); Emp e3 = new Emp(3, "Lisa", 300L, "CEO"); el.add(e3); return el; }}

When we run the above program, we get below output.

当我们运行上面的程序时,我们得到下面的输出。

[1Pankaj100SE, 2David200QE, 3Lisa300CEO][1Pankaj0SE, 2David0QE, 3Lisa0CEO][1Pankaj0SE, 2David0QE, 3Lisa0CEO]

We can also convert the Emp object to some other object in the map method Function implementation.

我们还可以在map方法Function实现中将Emp对象转换为其他对象。

That’s all for java 8 stream map examples.

Java 8流映射示例的全部内容。

Reference:

参考:

翻译自:

java 8流在另一个流

转载地址:http://dhlzd.baihongyu.com/

你可能感兴趣的文章
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>
阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
查看>>
阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
查看>>
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_04.ssm整合之编写SpringMVC框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
查看>>