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

这篇具有很好参考价值的文章主要介绍了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;

}

模拟数据

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.过滤数据中年龄大于等于十八的学生

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);
        }
    }

打印结果
java8 Stream流常用方法(持续更新中...),java,java8,stream流

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);

    }

打印结果
java8 Stream流常用方法(持续更新中...),java,java8,stream流

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);

    }

打印结果
java8 Stream流常用方法(持续更新中...),java,java8,stream流

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);

    }

打印结果
java8 Stream流常用方法(持续更新中...),java,java8,stream流

断点查看
java8 Stream流常用方法(持续更新中...),java,java8,stream流

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);

    }

打印结果
java8 Stream流常用方法(持续更新中...),java,java8,stream流

断点查看
java8 Stream流常用方法(持续更新中...),java,java8,stream流

持续更新中…文章来源地址https://www.toymoban.com/news/detail-861140.html

到了这里,关于java8 Stream流常用方法(持续更新中...)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java Stream 常用方法【详尽篇】

    1.Stream API 介绍 Java8 版本引入的重要特性之一, 对于集合(例如 List、Map、Set 等)进行处理和操作的高级抽象.Stream API 提供了一种更为简洁高效的的方式来处理集合数据, 可读性较高, 特别在数据的过滤、转换、聚合时的操作很简单方便快捷. 1.1 特点与优势 函数式风格 : Stream

    2024年02月08日
    浏览(58)
  • Java8 Stream流的合并

    最近的需求里有这样一个场景,要校验一个集合中每个对象的多个Id的有效性。比如一个Customer对象,有3个Id: id1 , id2 , id3 ,要把这些Id全部取出来,然后去数据库里查询它们是否存在。 通常情况下,我们都是从集合中取出对象的某一个字段,像这样: 现在要取3个字段,

    2024年02月02日
    浏览(52)
  • Java8 函数式编程stream流

    Java 8 中新增的特性旨在帮助程序员写出更好的代码,其中对核心类库的改进是很关键的一部分,也是本章的主要内容。对核心类库的改进主要包括集合类的 API 和新引入的流(Stream),流使程序员得以站在更高的抽象层次上对集合进行操作。下面将介绍stream流的用法。 ​场景

    2024年02月15日
    浏览(36)
  • Java8中Stream详细用法大全

    Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的Lambda ,给我们操作集合(Collection)提供了极大的便利。Stream流是JDK8新增的成员,允许以声明性方式处理数据集合,可以把Stream流看作是遍历数据集合的一个高级迭代器。Stream 是 Java8 中处理集合的关键抽

    2023年04月08日
    浏览(78)
  • Java8的Stream流的学习

    Stream可以由数组或集合创建,对流的操作分为两种: 中间操作,每次返回一个新的流,可以有多个。 终端操作,每个流只能进行一次终端操作,终端操作结束后流无法再次使用。终端操作会产生一个新的集合或值。 stream和parallelStream的简单区分: stream是顺序流,由主线程按

    2024年02月07日
    浏览(41)
  • java8利用Stream方法求两个List对象的交集、差集与并集(即:anyMatch和allMatch和noneMatch的区别详解)

    1、anyMatch  判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。 接口定义: boolean anyMatch(Predicate? super T predicate); 方法描述: 在anyMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 PredicateT 是接收一个T类型参数,然后经过

    2024年02月06日
    浏览(54)
  • Java8 Stream 之groupingBy 分组讲解

    本文主要讲解:Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /**      * 使用java8 stream groupingBy操作,按城市分组list      */     public void groupingByCity() {         MapString, ListEmployee map = employees.stream().collect(Collectors.groupingBy(Employee::getCi

    2024年02月13日
    浏览(44)
  • Java8 Stream流处理树形结构数据

    参考资料 Java8新特性-使用Stream流递归实现遍历树形结构 ID为2,6,11的Menu 是 ID为1的Menu子节点 ID为3,4,5的Menu 是 ID为2的Menu子节点 💥 注意 是下面这种写法的一种更简单的写法

    2024年02月01日
    浏览(53)
  • Java8的stream之groupingBy()分组排序

    groupingBy()是Stream API中最强大的收集器Collector之一,提供与SQL的GROUP BY子句类似的功能。 需要指定一个属性才能使用,通过该属性执行分组。我们通过提供功能接口的实现来实现这一点 - 通常通过传递lambda表达式。 TreeMap默认按照key升序排序,collectPlan.descendingMap()可以进行降序排

    2024年02月12日
    浏览(38)
  • Java8中Stream流求最大值最小值

    1. stream().reduce()实现 2. stream().max()或stream().min()实现 1. stream().reduce()实现 2. Collectors.summarizingInt()实现 3. stream().max()或stream().min()实现 1. stream().reduce()实现 2. Collectors.summarizingLong()实现 3. stream().max()或stream().min()实现 1. stream().reduce()实现 2. Collectors.summarizingLong()实现 3. stream().max(

    2024年01月17日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包