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

news2024/10/6 12:25:54

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

    }

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

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

持续更新中…

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django框架之Django安装与使用

一、Django框架下载 首先我们需要先确定好自己电脑上的python解释器环境&#xff0c;否则会导致后面项目所需要的库安装不了以及项目无法运行的问题。 要下载Django并开始使用它&#xff0c;你可以按照以下步骤进行&#xff1a; 1、安装Python 首先&#xff0c;确保你的计算…

Oracle 监控 SQL 精选 (一)

Oracle数据库的监控通常涉及性能、空间、会话、对象、备份、安全等多个层面。 有效的监控可以帮助 DBA 及时发现和解决问题&#xff0c;提高数据库的稳定性和性能&#xff0c;保障企业的数据安全和业务连续性。 常用的监控指标有&#xff1a; 性能指标&#xff1a; 查询响应时间…

vue+springboot项目的登录验证码(JAVA自带)

后台springboot CaptureController package com.example.controller;import com.example.common.Result; import com.example.service.AuthCodeService; import com.example.utils.CodeUtils; import lombok.SneakyThrows; import org.apache.ibatis.annotations.Param; impo…

ELF 1技术贴|CAN接口浅析:从原理到对测

引言 在当今智能化、网络化的时代&#xff0c;各种电子设备间的高效通信成为了技术发展的关键。而控制器局域网络&#xff08;Controller Area Network&#xff0c;简称CAN&#xff09;&#xff0c;作为嵌入式系统中不可或缺的通信协议&#xff0c;正扮演着链接桥梁的重要角色…

大厂常见算法50题-用两个栈实现队列

专栏持续更新50道算法题&#xff0c;都是大厂高频算法题&#xff0c;建议关注, 一起巧‘背’算法! 文章目录 题目解法总结 题目 解法 先搞清队列与栈的特点&#xff1a;队列先进先出&#xff0c;栈先进后出两个栈的分工&#xff1a;栈A入数据&#xff0c;栈B出数据需要保证取数…

COOIS 生产订单显示系统增强

需求说明&#xff1a;订单系统显示页面新增批量打印功能 增强点&#xff1a;CL_COIS_DISP_LIST_NAVIGATION -->TOOLBAR方法中新增隐式增强添加自定义打印按钮 增强点&#xff1a;BADI-->WORKORDER_INFOSYSTEM新增增强实施 实现位置&#xff1a;IF_EX_WORKORDER_INFOSYS…

【Leetcode】377. 组合总和 Ⅳ

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个由 不同 整数组成的数组 n u m s nums nums&#xff0c;和一个目标整数 t a r g e t target target 。请你从 n u m s nums nums 中找出并返回总和为 t a r g e t targ…

【STM32+HAL+Proteus】系列学习教程---ADC(查询、中断、DMA模式下的电压采集)

实现目标 1、学会STM32CubeMX软件关于ADC的配置 2、掌握ADC三种模式&#xff08;查询、中断、DMA&#xff09;编程 3、具体目标&#xff1a;1、将开发板单片机采集到的电压值上传至上位机串口调试助手显示。 一、ADC 概述 1、什么是ADC? ADC&#xff08;Analog to Digit…

实验一: 设备密码配置与远程管理

1.实验环境 用路由器和交换机搭建实验环境 2.需求描述 实现管理员主机对交换机和路由器的远程管理 设备上配置的密码都要被加密 3.推荐步骤 对路由器配置的步骤如下&#xff1a; 实现路由器和PC的连通性配置VTY密码和特权模式密码在PC上Telnet 到路由器。 对交换机配置的…

智慧文旅:引领旅游产业智慧升级的创新模式

一、智慧文旅是什么&#xff1f; 智慧文旅是指以当地特色文化为核心&#xff0c;借助现代科技手段&#xff0c;实现旅游景区全面智慧升级的旅游模式。在智慧文旅中&#xff0c;新一代信息网络技术和装备得到充分运用&#xff0c;文化旅游基础设施得到新建和改善&#xff0c;特…

无源DWDM与有源DWDM:两种系统在5G时代的作用与挑战

随着互联网、大数据和云计算等技术的快速发展&#xff0c;光纤通信技术在现代通信领域扮演着越来越重要的角色。作为光纤通信的关键技术之一&#xff0c;波分复用&#xff08;DWDM&#xff09;技术在提高光纤传输容量、优化网络结构等方面具有重要意义。根据系统是否需要外部能…

Ubuntu关闭防火墙、关闭selinux、关闭swap

关闭防火墙 打开终端&#xff0c;然后输入如下命令&#xff0c;查看防火墙状态&#xff1a; sudo ufw status 开启防火墙命令如下&#xff1a; sudo ufw enable 关闭防火墙命令如下&#xff1a; sudo ufw disable 关闭selinux setenforce 0 && sed -i s/SELINUXe…

在windows上安装MySQL数据库全过程

1.首先在MySQL的官网找到其安装包 在下图中点击MySQL Community(gpl) 找到MySQL Community Server 选择版本进行安装包的下载 2.安装包&#xff08;Windows (x86, 64-bit), MSI Installer&#xff09;安装步骤 继续点击下一步 继续进行下一步&#xff0c;直到出现此界面&#…

ClickHouse 数据类型、表引擎与TTL

文章目录 数据类型注意事项 表引擎1.TinyLog 引擎2.MergeTree 引擎3.ReplacingMergeTree 引擎4.AggregatingMergeTree 引擎5.SummingMergeTree 引擎6.CollapsingMergeTree 引擎7.Distributed 引擎 TTL列级 TTL表级TTL 数据类型 ClickHouse 数据类型Java 数据类型数据范围UInt8…

陆游只爱前妻唐婉,深情大渣男太虐了

陆游和唐婉的感情太好了&#xff0c;经常写诗逗乐。陆游科举考不上&#xff0c;沉迷儿女情长&#xff0c;被母亲拆散。 秦侩当政&#xff0c;就是害死岳飞的那个秦桧。陆游第二次考进士&#xff0c;被秦侩批复“喜论恢复”&#xff0c;没考上。陆游的母亲生气&#xff0c;找个…

CSS详解(二)

接上篇CSS详解&#xff08;一&#xff09;-CSDN博客 1、网页布局本质 网页布局的本质是通过 CSS 将各种 HTML 元素&#xff08;即“盒子”&#xff09;摆放到页面中合适的位置。这包括设置元素的尺寸、位置、边距、填充、对齐方式、浮动等。这些盒子通过 CSS 的各种布局机制进…

【深度学习】StabelDiffusion,Lora训练过程,秋叶包,Linux,SDXL Lora训练

文章目录 一、环境搭建指南二、个性化安装流程三、启动应用四、打开web五、开始训练 19.27服务器 一、环境搭建指南 打造一个高效且友好的开发环境&#xff0c;我们推荐使用以下简洁明了的中文资源&#xff1a; 项目源码获取&#xff1a; 通过以下命令轻松克隆项目及所有子模…

抽象的代理模式1.0版本

前言&#xff1a; 在阅读Spring Security官方文档时&#xff0c;里面设计到了一种设计模式——代理模式Proxy 众里寻她千百度&#xff0c;蓦然回首&#xff0c;那人却在灯火阑珊处 开始 在之前的文章里陈述了一个观点——编程语言和语言没有区别 现看看我们日常生活中的代理…

数据库并发控制思维导图+大纲笔记

思维导图 大纲笔记 多用户数据库系统 定义 允许多个用户同时使用的数据库系统特点 在同一时刻并发运行的事务数可达数百上千个多事务执行方式 事务串行执行交叉并发方式 单处理机系统同时并发方式 多处理机系统事务并发执行带来的问题 产生多个事务同时存取同一数据的情况可能…

时间,空间复杂度讲解——夯实根基

前言&#xff1a;本节内容属于数据结构的入门知识——算法的时间复杂度和空间复杂度。 时间复杂度和空间复杂度的知识点很少&#xff0c; 也很简单。 本节的主要篇幅会放在使用具体例题来分析时间复杂度和空间复杂度。本节内容适合刚刚接触数据结构或者基础有些薄弱的友友们哦。…