Java8 中 Steam流的用法

admin 2024-11-10 986 11/10

Java8 中 Steam流的用法

Java8 新增的 Stream 流大大减轻了我们代码的工作量

1、初始化

package cn.open2ai.java;

import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@Data
class User {
    // id
    private Integer id;
    // 姓名
    private String name;
    // 年龄
    private Integer age;
    public User(int id,String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class DemoApp
{
    public static void main( String[] args )
    {
        List<User> users = new ArrayList<>();
        users.add(new User(1,"Tom", 18));
        users.add(new User(2,"Jerry", 20));
        users.add(new User(3,"Tom", 20));

        // 1. 循环forEach
        // 循环输出user对象
        // users.stream().forEach(user -> System.out.println(user));

//        // 2. 筛选name是Tom的用户
//        users.stream()
//                .filter(user -> "Tom".equals(user.name))
//                .forEach(System.out::println); // 输出 {"age":1,"name":"Tom"}

        // 3. 映射 map/flatMap
        // 打印users里的name
        users.stream().map(user -> user.getName()).forEach(System.out::println); // 输出 Tom Jerry

        // 4. 生成新的list,包含ids
        List<Integer> ids = users.stream().map(user -> user.getId()).collect(Collectors.toList());
        ids.forEach(System.out::println);

    }

}

2、遍历 forEach

// 循环输出user对象
users.stream().forEach(user -> System.out.println(user));
User{id=1, name='Tom', age=18}
User{id=2, name='Jerry', age=20}

3、筛选 filter

        // 2. 筛选name是Tom的用户
        users.stream()
                .filter(user -> "Tom".equals(user.name))
                .forEach(System.out::println); // 输出 {"age":1,"name":"Tom"}
User{id=1, name='Tom', age=18}
User{id=3, name='Tom', age=20}

4、生成新的list,包含ids

        // 4. 生成新的list,包含ids
        List<Object> ids = users.stream().map(user -> user.id).collect(Collectors.toList());
        ids.forEach(System.out::println);
1
2
3

参考文档

- THE END -
Tag:

admin

11月10日17:11

最后修改:2024年11月10日
0

非特殊说明,本博所有文章均为博主原创。