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;}// 学生idprivate 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.hqwc.cn/news/661763.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产操作系统上如何比较软件版本 _ 统信UOS _ 麒麟KOS _ 中科方德

原文链接&#xff1a;国产操作系统上如何比较软件版本 | 统信UOS | 麒麟KOS | 中科方德 Hello&#xff0c;大家好啊&#xff01;在国产操作系统上管理软件版本是确保系统安全性和功能稳定性的关键一环。今天&#xff0c;我将向大家展示如何通过编写脚本在国产操作系统上检查软件…

【前端】-【防止接口重复请求】

文章目录 需求实现方案方案一方案二方案三 需求 对整个的项目都做一下接口防止重复请求的处理 实现方案 方案一 思路&#xff1a;通过使用axios拦截器&#xff0c;在请求拦截器中开启全屏Loading&#xff0c;然后在响应拦截器中将Loading关闭。 代码&#xff1a; 问题&…

C# Winform父窗体打开新的子窗体前,关闭其他子窗体

随着Winform项目越来越多&#xff0c;界面上显示的窗体越来越多&#xff0c;窗体管理变得更加繁琐。有时候我们要打开新窗体&#xff0c;然后关闭多余的其他窗体&#xff0c;这个时候如果一个一个去关闭就会变得很麻烦&#xff0c;而且可能还会出现遗漏的情况。这篇文章介绍了三…

记一次生产事故的排查和解决

一. 事故概述 春节期间, 生产系统多次出现假死不可用现象, 导致绝大部分业务无法进行. 主要表现现象为接口无法访问. 背景为900W客户表和近实时ES, 以及春节期间疫情导致的普通卖菜场景近似秒杀等. 二. 排查过程 优先排查了info, error, catalina日志, 发现以下异常: 主要的…

C语言——单链表实现数据增删查改

一.前言 嗨嗨嗨&#xff0c;我们又见面了。前面我们已经学习了关于数据结构中的顺序表&#xff0c;今天我们来学习数据结构中的单链表。废话不多说让我们直接开始吧。 二.正文 1.1链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺…

【Flask开发实战】HTML模板代码复用之extends使用

一、前言 在 HTML 开发中&#xff0c;尤其是在使用模板引擎&#xff08;如 Jinja2&#xff0c;常用于 Flask 应用&#xff09;时&#xff0c;extends 是一个非常有用的指令&#xff0c;它用于实现模板继承&#xff0c;从而达到代码复用的目的。这可以让你定义一个基本模板&…

三体中的二向箔

目录 描述 外观 基本原理 攻击范围及影响 副作用 保存方式 实战情况 二向箔是在中国科幻名匠刘慈欣的作品《三体3&#xff1a;死神永生》中登场的宇宙规律武器之一。首次出现于一艘来自歌者“母世界”的宇宙飞船。由于宇宙战争愈演愈烈&#xff0c;二向箔对于高等文明而…

Codigger数据篇(下):数据安全的全方位保障

在数字化浪潮中&#xff0c;数据已成为现代企业的核心财富。Codigger作为领先的数据服务平台&#xff0c;深知数据安全对于用户的重要性&#xff0c;因此在深挖数据价值的同时&#xff0c;我们始终坚守数据安全防线。 一、双重加密技术保障 Codigger平台运用先进的加密通信和…

python 基础语句

python 基础语句 1. import 语句 用于导入相应的包以供后面的代码使用 import xxx -将xxx包导入import pandas as pd - 导入 pandas 包并且将其所有的对象、方法、属性赋予 pd 对象from xxx1 import xxx2 - 从xxx1 包中导入 xxx2 方法 2. 输入输出语句 input&#xff0c;pr…

ip ssl证书无限端口网站

IP SSL证书是由CA认证机构颁发的一种特殊数字证书。大部分SSL数字证书都需要用户使用域名进行申请&#xff0c;想要对公网IP地址加密实现https访问就需要申请IP SSL证书。IP SSL证书采用了强大的加密算法&#xff0c;可以有效地防止数据在传输过程中被窃取或篡改&#xff0c;具…

TS学习-泛型基础

目录 1&#xff0c;介绍1&#xff0c;在函数中使用2&#xff0c;在类型别名&#xff0c;接口中使用3&#xff0c;在类中使用 2&#xff0c;泛型约束3&#xff0c;多泛型4&#xff0c;举例实现 Map 1&#xff0c;介绍 泛型相当于是一个类型变量&#xff0c;有时无法预先知道具体…

药品商品名/通用名/化学名/别名-数据库查询方法

药品通用名-药品化学名-药品商品名的区别 药品通用名通常是由药典委员会或相关药品命名机构根据药品的化学成分或治疗特性制定的标准化名称。这个名称在科学和医疗领域中用于确保对药品的准确和一致性识别。如阿司匹林&#xff08;Aspirin&#xff09;是药品的通用名。&#x…