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

java8 Stream流常用方法

    • 1.过滤数据中年龄大于等于十八的学生
    • 2.获取对象中其中的一个字段并添加到集合(以学生姓名(name)为例)
    • 3.获取对象中其中的一个字段并转为其他数据类型最后添加到集合(以学生性别(sex)为例,将String转为Integer类型)
    • 4.将对象中某个字段作为key,某个字段作为value(以id作为key,name作为value为例)
    • 5.将对象中某个字段作为key,某个字段作为value(以id作为key,学生对象作为value为例)

操作对象

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

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

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

    }

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

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

    }

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

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

    }

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

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

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

    }

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

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

持续更新中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/582179.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解析链动2+1模式:探寻电商新商业契机

大家好&#xff0c;我是微三云周丽 在当今数字化时代&#xff0c;电商行业日新月异&#xff0c;不断涌现出各种创新商业模式。其中&#xff0c;链动2121模式以其独特的商业逻辑和快速裂变的特性&#xff0c;吸引了众多用户和企业家的关注。本文将深入剖析链动2121模式的运作机…

在 Windows 系统上安装 TeamViewer 13

在 Windows 系统上安装 TeamViewer 13 References 默认安装到所有用户 同意协议 安装目录 勾选内容 打开文件位置 打开 rClientID.exe Extras -> Options -> Advanced Show advanced options -> Display language 重新启动TeamViewer 语言可修改为中文简体 …

快团团同城落地配怎么一键开团?免费配送设置教程!

1&#xff09;点击快团团小程序底部的【一键开团】找到【物流方式】 2&#xff09;选择物流方式为【顾客自提】后&#xff0c;点击【设置自提点】 3&#xff09;选择自提点 4&#xff09;可勾选已设置的自提点&#xff0c;或是点击【添加自提点】 5&#xff09;设置好自提点…

自制贪吃蛇小游戏

此片文章涉及到到控制台设置的相关操作&#xff0c;虚拟键码&#xff0c;宽字符输出等&#xff0c;有些地方大家可能会看不懂&#xff0c;可以阅读以下文章来进一步了解&#xff1a; 控制台程序设置-CSDN博客 效果展示&#xff1a; QQ2024428-181932 源码已放在文章结尾 目录 …

【while循环】

目录 什么是循环 while语句的执行过程 编程求1*2*3*...*n 所有不超过1000的数中含有数字3的自然数 求数 求数II 编程求1平方2平方...n平方 什么是循环 循环就是重复做同样的事儿使用while语句循环输出1到100 int i 1; while( i < 100 ){cout <<…

ES练习项目-酒店搜索

目录 1 需求分析2 酒店搜索和分页2.1 请求和响应分析2.2 定义实体类&#xff0c;接收请求参数的JSON对象2.3 编写controller&#xff0c;接收页面的请求2.4 编写业务实现&#xff0c;利用RestHighLevelClient实现搜索、分页 3. 酒店结果过滤3.1 请求和响应分析3.2 修改请求参数…

java-stream流案例

需求 代码 Vote类 // 1. 定义一个投票类 public class Vote {private String name;private ArrayList<String> voteList;public Vote(String name, ArrayList<String> voteList) {this.name name;this.voteList voteList;}public String getName() {return nam…

比较LLM和RAG技术:塑造AI的未来

在人工智能&#xff08;AI&#xff09;的动态领域中&#xff0c;两项突破性技术——大型语言模型&#xff08;LLM&#xff09;和检索增强生成&#xff08;RAG&#xff09;因其在理解和生成类人文本方面的变革潜力而脱颖而出。本文开始了LLM和RAG之间的比较之旅&#xff0c;阐明…

ROS2专栏(三) | 理解ROS2的动作

​ 1. 创建一个动作 目标&#xff1a; 在ROS 2软件包中定义一个动作。 1.1 新建包 设置一个 workspace 并创建一个名为 action_tutorials_interfaces 的包&#xff1a; mkdir -p ros2_ws/src #you can reuse existing workspace with this naming convention cd ros2_ws/s…

C++:拷贝构造函数与赋值的区别

目录 拷贝构造函数 拷贝构造函数的使用方法 拷贝构造函数与赋值运算符的区别 谈深拷贝和浅拷贝 浅拷贝 注意: 深拷贝 拷贝构造函数 拷贝构造函数的也是一种构造函数,它的作用是将一个类的成员拷贝到另一个类中,类似于赋值。拷贝构造函数分为深拷贝和浅拷贝。 先来定义一…

【MySQL 5.7安装时候 出现2503报错,解决方案】

MySQL5.7 安装遇 2503问题如何解决 1.能正常安装就点这里2.出现2503问题就看这2.1先看问题2.1.1在官网下载好安装包后&#xff0c;首先先确认安装包是否完整&#xff0c;排除安装包损坏的问题2.1.2 安装时候出现这个2503问题 2.2上解决方案2.2.1 打开任务管理器2.2.2 解决 1.能…

网盘—上传文件

本文主要讲解网盘里面关于文件操作部分的上传文件&#xff0c;具体步骤如下 目录 1、实施步骤&#xff1a; 2、代码实现 2.1、添加上传文件协议 2.2、添加上传文件槽函数 2.3、添加槽函数定义 2.4、关联上传槽函数 2.5、服务器端 2.6、在服务器端添加上传文件请求的ca…

4G远程温湿度传感器在农业中的应用—福建蜂窝物联网科技有限公司

解决方案 农业四情监测预警解决方案 农业四情指的是田间的虫情、作物的苗情、气候的灾情和土壤墒情。“四情”监测预警系统的组成包括管式土壤墒情监测站、虫情测报灯、气象站、农情监测摄像机&#xff0c;可实时监测基地状况,可以提高监测的效率和准确性&#xff0c;为农业生…

分布式系统事务一致性解决方案(基于事务消息)

参考&#xff1a;https://rocketmq.apache.org/zh/docs/featureBehavior/04transactionmessage/ 文章目录 概要错误的方案方案一&#xff1a;业务方自己实现方案二&#xff1a;RocketMQ 事务消息什么是事务消息事务消息处理流程事务消息生命周期使用限制使用示例使用建议 概要 …

进迭时空宣布开源RISC-V芯片的AI核心技术

仟江水商业电讯&#xff08;4月29日 北京 委托发布&#xff09;4月29日&#xff0c;在“创芯生生不息——进迭时空2024年度产品发布会”上&#xff0c;进迭时空CEO、创始人&#xff0c;陈志坚博士宣布将开源进迭时空在自研RISC-V AI CPU上的核心技术&#xff0c;包括AI扩展指令…

数据科学导论续

一、大数据采集的流程和方法 大数据采集的流程和方法 系统日志采集方法 很多互联网企业都有自己的海量数据采集工具&#xff0c;多用于系统日志采集&#xff0c;例如&#xff1a; Flume&#xff1a;分布式日志收集系统&#xff0c;最初由Cloudera开发&#xff0c;现是Apache的…

SPSS之判别分析

SPSS的判别分析过程中默认使用的是Fisher判别法和Bayes判别法&#xff0c;并以前者为主&#xff0c;在指定选项后也可以给出Bayes判别法的结果。 SPSS中判别分析在【分析】—【分类】—【判别】中完成。选定类别变量放入【分组变量】框中&#xff0c;单击定义范围(D)按钮给出类…

《Fundamentals of Power Electronics》——Buck、Boost、Buck-Boost三个电路的CCM-DCM工作特性总结

Buck、Boost、Buck-Boost这三个电路的CCM-DCM工作特性总结如下表所示&#xff1a; Buck、Boost、Buck-Boost这三个电路工作在DCM模式下电压传输比的对比图如下所示&#xff1a; 由上图可知&#xff0c;Buck-Boost电路的工作特性是一条斜率为的直线&#xff0c;Buck电路和Boost电…

IDEA 中的奇技淫巧

IDEA 中的奇技淫巧 书签 在使用ctrlalt方向键跳转时&#xff0c;或者追踪代码时&#xff0c;经常遇到的情况是层级太多&#xff0c;找不到代码的初始位置&#xff0c;入口。可以通过书签的形式去打上一个标记&#xff0c;后续可以直接跳转到书签位置。 标记书签&#xff1a;c…

Qt窗口

QMainWindow Qt 窗⼝ 是通过 QMainWindow类 来实现的。 QMainWindow 是⼀个为⽤⼾提供主窗⼝程序的类&#xff0c;继承⾃ QWidget 类&#xff0c;并且提供了⼀个预定义的 布局。QMainWindow 包含 ⼀个菜单栏&#xff08;menu bar&#xff09;、多个⼯具栏(tool bars)、多个浮动…