Table of Contents
Preface
Overview
Example
Home Java javaTutorial How to use the map() method in Java8 StreamAPI

How to use the map() method in Java8 StreamAPI

May 13, 2023 pm 07:16 PM
java map() streamapi

Preface

In daily development work, we often encounter the problem of processing data in a List, such as obtaining a collection of attributes in an object from a collection of objects. What we thought before was to traverse each element and then take it out and put it into another collection, which is more cumbersome; after Java 8, Stream operations can be performed on collections, making the above processing more concise.

Overview

Stream There is a map() method in streaming processing. Let’s take a look at its definition first. This method is in the java.util.stream.Stream class

How to use the map() method in Java8 StreamAPI

You can see that the map() method receives a functional interface parameter. The input parameter has a T and returns a Stream. This stream is R generic. There are mainly the following points to note:

  • The input parameter is an element in a stream;

  • The output parameter is a stream, and the stream is New element;

is represented by a diagram as follows. There are four circular patterns in the original stream. After calling the map() function, it becomes four five-pointed star patterns. Here The circular pattern and the five-pointed star pattern have a one-to-one correspondence, that is, how many elements there are in the original stream, how many elements there are still after calling the map() method, the only thing that changes is the element type in the stream.

How to use the map() method in Java8 StreamAPI

Example

We first create an entity class Student.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@Data

public class Student implements Serializable {

    /**

     * 姓名

     */

    private String name;

    /**

     * 班级

     */

    private String schoolClass;

    /**

     *语文成绩

     */

    private Integer chineseScore;

    /**

     * 数学成绩

     */

    private Integer mathScore;

}

Copy after login

and then create a class to initialize data:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

public class DataFactory {

    public static List<Student> initData(){

        List<Student> list= new ArrayList<>();

        Student s1=new Student();

        s1.setName("汤霖");

        s1.setSchoolClass("小一班");

        s1.setChineseScore(87);

        s1.setMathScore(95);

        list.add(s1);

  

        Student s2=new Student();

        s2.setName("李牧唐");

        s2.setSchoolClass("小二班");

        s2.setChineseScore(98);

        s2.setMathScore(97);

        list.add(s2);

  

        Student s3=new Student();

        s3.setName("顾北辰");

        s3.setSchoolClass("二年级");

        s3.setChineseScore(89);

        s3.setMathScore(94);

        list.add(s3);

  

        Student s4=new Student();

        s4.setName("言言");

        s4.setSchoolClass("小二班");

        s4.setChineseScore(100);

        s4.setMathScore(90);

        list.add(s4);

  

        Student s5=new Student();

        s5.setName("大运");

        s5.setSchoolClass("小三班");

        s5.setChineseScore(96);

        s5.setMathScore(100);

        list.add(s5);

        return list;

    }

}

Copy after login

Find the names of all students

1

2

3

4

5

public static void main(String[] args) {

    DataFactory.initData().stream()

        .map(student -> student.getName())

        .forEach(System.out::println);

}

Copy after login

The map() method is used here. The input parameter is Student, the output parameter is a stream with String as a generic type, and finally forEach is used. After printing, look at the result

How to use the map() method in Java8 StreamAPI

and you can see that all the students’ names have just been printed out. What if you want to put these student names into a List?

Put the student names into the list

1

2

3

4

5

6

7

8

9

public static void main(String[] args) {

    //将所有的学生姓名放到list中

    List<String> studentNames = DataFactory.initData().stream()

        .map(student -> student.getName())

        .collect(Collectors.toList());

    for (String studentName : studentNames) {

        System.out.println(studentName);

    }

}

Copy after login

Similarly find all the classes and find out the scores of all students. You can compare it to the above and you can see the print There is duplicate data in the student names or classes. How to solve this problem? We know that the data is put into the List at the end. In order to solve the duplication problem, the data can be put into the Set and use the deduplication function of the Set:

1

2

3

4

//将学生姓名放到Set中,可以实现去重功能

Set<String> studentNames = DataFactory.initData().stream()

    .map(student -> student.getName())

    .collect(Collectors.toSet());

Copy after login

The result will no longer be printed. If you are interested, you can try it yourself. try.

Set the Chinese score of the student named "Tang Lin" to 90

Now there is a need to set the Chinese score of the student named Tang Lin to90, let’s see how to use the map() function?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public static void main(String[] args) {

    List<Student> students = DataFactory.initData();

 

    List<Student> studentNames = students.stream().map(student -> {

        if ("汤霖".equals(student.getName())) {

            student.setChineseScore(90);

        }

        return student;

    }).collect(Collectors.toList());

 

    for (Student studentName : studentNames) {

        System.out.println(studentName);

    }

    //打印老的list

    System.out.println("-----改之前的数据-----");

    for (Student studentName : students) {

        System.out.println(studentName);

    }

}

Copy after login

Output result:

How to use the map() method in Java8 StreamAPI

##It can be seen from the above results that Tang Lin’s Chinese score has indeed been changed to

90 , this is correct. Looking at the original data, it has also been changed to 90. As mentioned above, the map() method generates a new stream, and the data in the original stream has also been modified, because the following line of code is in the original stream. The data in the reference type is modified on the basis of the elements in the element, resulting in the data in the original stream also being modified.

The above is the detailed content of How to use the map() method in Java8 StreamAPI. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Perfect Number in Java Perfect Number in Java Aug 30, 2024 pm 04:28 PM

Guide to Perfect Number in Java. Here we discuss the Definition, How to check Perfect number in Java?, examples with code implementation.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Guide to Weka in Java. Here we discuss the Introduction, how to use weka java, the type of platform, and advantages with examples.

Smith Number in Java Smith Number in Java Aug 30, 2024 pm 04:28 PM

Guide to Smith Number in Java. Here we discuss the Definition, How to check smith number in Java? example with code implementation.

Java Spring Interview Questions Java Spring Interview Questions Aug 30, 2024 pm 04:29 PM

In this article, we have kept the most asked Java Spring Interview Questions with their detailed answers. So that you can crack the interview.

Break or return from Java 8 stream forEach? Break or return from Java 8 stream forEach? Feb 07, 2025 pm 12:09 PM

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Guide to TimeStamp to Date in Java. Here we also discuss the introduction and how to convert timestamp to date in java along with examples.

Java Program to Find the Volume of Capsule Java Program to Find the Volume of Capsule Feb 07, 2025 am 11:37 AM

Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

PHP vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

See all articles