• java8 Stream流常用方法(持续更新中...)


    操作对象

    package com.example.entity;
    
    import lombok.Data;
    
    @Data
    public class Student {
    
        public Student(Integer id, String name, Integer age, String sex) {
         	this.id = id;
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        // 学生id
        private Integer id;
    
        // 学生姓名
        private String name;
    
        // 学生年龄
        private Integer age;
    
        // 学生性别 0-女,1-男
        private String sex;
    
    }
    
    • 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

    模拟数据

    public static void main(String[] args) {
    
            // 模拟数据
            Student s1 = new Student(100, "张三", 19, "1");
            Student s2 = new Student(101, "李四", 17, "1");
            Student s3 = new Student(102, "Lisa", 18, "0");
            Student s4 = new Student(103, "Jack", 19, "1");
    
            // 将模拟数据存入集合中
            List<Student> list = Arrays.asList(s1, s2, s3, s4);
    
            
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    操作

    1.过滤数据中年龄大于等于十八的学生

    public static void main(String[] args) {
    
            // 模拟数据
            Student s1 = new Student(100, "张三", 19, "1");
            Student s2 = new Student(101, "李四", 17, "1");
            Student s3 = new Student(102, "Lisa", 18, "0");
            Student s4 = new Student(103, "Jack", 19, "1");
    
            // 将模拟数据存入集合中
            List<Student> list = Arrays.asList(s1, s2, s3, s4);
    
            // 筛选学生中年龄大于等于18的学生
            List<Student> collect = list.stream().filter(student -> student.getAge() >= 18).collect(Collectors.toList());
    
            // 打印新集合中的数据
            if (collect.size() > 0) {
                collect.forEach(System.out::println);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    打印结果
    在这里插入图片描述

    2.获取对象中其中的一个字段并添加到集合(以学生姓名(name)为例)

    public static void main(String[] args) {
    
            // 模拟数据
            Student s1 = new Student(100, "张三", 19, "1");
            Student s2 = new Student(101, "李四", 17, "1");
            Student s3 = new Student(102, "Lisa", 18, "0");
            Student s4 = new Student(103, "Jack", 19, "1");
    
            // 将模拟数据存入集合中
            List<Student> list = Arrays.asList(s1, s2, s3, s4);
    
            // 获取对象中其中的一个字段并添加到集合(以学生姓名(name)为例)
            List<String> collect = list.stream().map(Student::getName).collect(Collectors.toList());
    
            // 打印结果
            collect.forEach(System.out::println);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    打印结果
    在这里插入图片描述

    3.获取对象中其中的一个字段并转为其他数据类型最后添加到集合(以学生性别(sex)为例,将String转为Integer类型)

    注意:异常自己捕捉,就比如这里String转Intger就可能出现NumberFormatException异常

    public static void main(String[] args) {
    
            // 模拟数据
            Student s1 = new Student(100, "张三", 19, "1");
            Student s2 = new Student(101, "李四", 17, "1");
            Student s3 = new Student(102, "Lisa", 18, "0");
            Student s4 = new Student(103, "Jack", 19, "1");
    
            // 将模拟数据存入集合中
            List<Student> list = Arrays.asList(s1, s2, s3, s4);
    
            // 获取对象中其中的一个字段并转为其他数据类型最后添加到集合(以学生性别(sex)为例,将String转为Integer类型)
            List<Integer> collect = list.stream().map(Student::getSex).map(Integer::parseInt).collect(Collectors.toList());
    
            // 打印结果
            collect.forEach(System.out::println);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    打印结果
    在这里插入图片描述

    4.将对象中某个字段作为key,某个字段作为value(以id作为key,name作为value为例)

    public static void main(String[] args) {
    
            // 模拟数据
            Student s1 = new Student(100, "张三", 19, "1");
            Student s2 = new Student(101, "李四", 17, "1");
            Student s3 = new Student(102, "Lisa", 18, "0");
            Student s4 = new Student(103, "Jack", 19, "1");
    
            // 将模拟数据存入集合中
            List<Student> list = Arrays.asList(s1, s2, s3, s4);
    
            // 取对象id为key,其他选一个字段为value(以学生姓名为例)
            Map<Integer, String> map = list.stream().collect(Collectors.toMap(Student::getId, Student::getName));
    
            System.out.println(map);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    打印结果
    在这里插入图片描述

    断点查看
    在这里插入图片描述

    5.将对象中某个字段作为key,某个字段作为value(以id作为key,学生对象作为value为例)

    public static void main(String[] args) {
    
            // 模拟数据
            Student s1 = new Student(100, "张三", 19, "1");
            Student s2 = new Student(101, "李四", 17, "1");
            Student s3 = new Student(102, "Lisa", 18, "0");
            Student s4 = new Student(103, "Jack", 19, "1");
    
            // 将模拟数据存入集合中
            List<Student> list = Arrays.asList(s1, s2, s3, s4);
    
            // 取对象id为key,对象为value(以学生id为key,学生对象为value为例)
            Map<Integer, Student> map = list.stream().collect(Collectors.toMap(Student::getId, Function.identity()));
    
            System.out.println(map);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    打印结果
    在这里插入图片描述

    断点查看
    在这里插入图片描述

    持续更新中…

  • 相关阅读:
    HTML学习笔记Day1-HTML基本语法
    百度地图——鹰眼轨迹服务
    【编译原理】-- 第二章(三)(文法的化简改造、无用产生式、产生式的消除、文法的其他表示方法、例题)
    Windows环境的Jenkins脚本
    让人头疼的“双十一”
    腾讯云服务器OpenCloudOS操作系统详细介绍
    备忘录:关于C#生成商品条码
    LeetCode C++ 28.实现strStr()
    手机号正则
    在master分支进行代码回滚
  • 原文地址:https://blog.csdn.net/qq_42991839/article/details/138182072