java list stream 去除 null_Stream流的这些操作,你得知道,对你工作有很大帮助

2023-10-27

作者:扬帆( ω )起航

原文:https://blog.csdn.net/qq_43677736

Stream流

Stream(流)是一个来自数据源的元素队列并支持聚合操作:

  • 元素是特定类型的对象,形成一个队列。Java中的Stream并不会存储元素,而 是按需计算。

  • 数据源 流的来源。可以是集合,数组等。

  • 聚合操作类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted 等。

Stream流操作的三个步骤:

  1. 创建Stream

    一个数据源(如:集合、数组),获取一个流

  2. 中间操作

    一个中间操作链,对数据源的数据进行处理

  3. 终止操作

    一个终止操作,执行中间操作链,并产生结果

创建Stream步骤:

  • 通过Collection系列集合提供的顺序流stream()或并行流parallelStream()

  • 通过Arrays中的静态方法stream()获取数据流

  • 通过Stream类中的静态方法of()

代码实例:

package com.ysh.review01_Stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class StreamTest01 {
public static void main(String[] args) {
//第一种方式:通过集合中的stream()方法创建Stream
List<String> list= Arrays.asList("红太狼","灰太狼","喜羊羊");
Stream<String> stream=list.stream();
//通过集合中的parallelStream方法创建
Stream<String> stream2 = list.parallelStream();
//第二种方式:通过java.util.Arrays下的静态方法stream创建Stream
Integer[] integer=new Integer[]{ 1,2,4};
//这里需要注意的是Arrays中的stream方法里面的参数需要一个数组,且数组的类型是一个引用类型或者是一个包装类
Stream<Integer> stream3 = Arrays.stream(integer);
//第三种方式:通过Stream中的of方法,实际上这种方式创建Stream实际上间接的通过调用Arrays中的stream()静态方法
Stream<String> stream4=Stream.of("a","b","c");
}
}

Stream的中间操作

筛选和切片

filter:过滤器

package com.ysh.review01_Stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class StramTest02 {
public static void main(String[] args) {
Employee employee01=new Employee("yang","hui",29);
Employee employee02=new Employee("yang","hui",49);
Employee employee03=new Employee("yang","hui",9);
Employee employee04=new Employee("yang","hui",89);
Employee employee05=new Employee("yang","hui",89);
Employee employee06=new Employee("yang","hui",89);
List<Employee> list= Arrays.asList(employee01,employee02,employee03,employee04,employee05,employee06);
//创建Stream
Stream<Employee> stream1 = list.stream();
//对stream1流进行过滤
Stream<Employee> s = stream1.filter((e) -> {
System.out.println("---------------filter------------");
//过滤掉年龄小于19
return e.getAge() >= 19;
});
s.forEach((e-> System.out.println(e)));
}
}
class Employee {
private String id;
private String name;
private int age;

public Employee() {

}

public Employee(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() !
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java list stream 去除 null_Stream流的这些操作,你得知道,对你工作有很大帮助 的相关文章

  • MySQL简单命令和SELECT查询,给字段起别名【MySQL数据库】

    Java养成计划 学习打卡第六十四天 内容导航 数据库的相关操作 数据库的导入 查看导入数据库中的表 查看表中的数据 查看表的基本结构 简化 查看表的结构 详细 查看mysql数据库的版本号 查询当前使用的数据库 退出mysql SQL查询
  • C#常见的两种错误

    一 WindowsFormsApplication2 Form1 不包含 Form1 Load 的定义 并且找不到可接受类型为 WindowsFormsApplication2 Form1 的第一个参数的扩展方法 Form1 Load 是否
  • 小程序上传发布

    1 上传发布 一个小程序从开发完到上线一般要经过 预览 gt 上传代码 gt 提交审核 gt 发布等步骤 2 预览 使用开发者工具可以预览小程序 帮助开发者检查小程序在移动客户端上的真实表现 点击开发者工具顶部操作栏的预览按钮 开发者工具会
  • Linux终端退出程序不退出解决方案(nohup/screen)

    终端异常退出后 后台进程不关闭的解决办法 1 使用nohup命令 nohup
  • android:installLocation简析

    文章来源 http www cnblogs com Lefter archive 2012 03 07 2383962 html 在Froyo android 2 2 API Level 8 中引入了android installLocat
  • vue 动态面包屑 通过面包屑带参数跨级跳转 面包屑动态标题 多级路由嵌套设置默认页面和隐藏左侧导航栏显示

    面包屑 实现效果 可以通过面包屑进行跨级跳转 以下为我的面包屑组件 breadcrumb vue
  • React:select受控

    import React from react class Selector extends React Component constructor super this state val
  • pandas安装踩坑

    pandas安装踩坑 已有环境 安装问题 最后 重点来了 解决方案 总结 已有环境 win7 python3 8 1 原来用的python2 6 pip装的时候它说快不维护更新了 就把python3也给装上了 pip 20 0 2 安装问题
  • HSQLDB 试用

    1 先试用服务器模式 1 下载hsqldb 解压并进入该目录 创建data目录 2 创建数据库 java cp lib hsqldb jar org hsqldb Server database 0 file test1 dbname 0
  • 机器学习-情感分析小案例

    对发帖情感进行分析 字段说明 Announce ID字段代表用户ID User Name字段代表用户名 topic字段代表发帖主题 body字段代表发帖内容 post type字段代表发帖话题是否与工作相关 sentiment字段表明发帖情
  • Layui框架标签展示,用复选框动态控制标签增加和删除

    比较冷门的功能 纪录一下 先看效果图 看大家有没有类似的需求可以照搬 1表格展示 2 表单添加 3 复选框控制添加和取消生成标签 讲一下逻辑 点击新建标签 显示or隐藏标签选择框 标签列表是调用后台接口动态生成的 上代码 1 div cla
  • Python中的import

    Python中的import 第三方包 如selenium 放置在 python27 Lib site packages 安装 python setup py install python 自带的包 unittest json 放置在 py
  • Java 基础系列(二十一) --- Servlet 项目的搭建和部署

    背景知识 Tomcat 是一个 HTTP 服务器 其开放了一组 API 可以供我们程序猿进行使用 这组 API 就是 Servlet Servlet 1 Servlet 项目的创建 2 Servlet 项目的部署 2 1 本地部署 2 2
  • epic如何修改着色器缓存路径

    1 我们先找到缓存路径存放位置 C Users Administrator AppData Local UnrealEngine Common DerivedDataCache 可以自行删除 2 我们修改缓存位置 1 找到文件 E Epic
  • 版本管理可视化工具GitKraKe安装

    资源下载地址 https download csdn net download u012796085 87953404 1 解压后安装GitKrakenSetup 7 5 5 exe 2 命令窗口进入GitKraken存放目录 分别执行以下

随机推荐

  • C语言:用C语言实现进制转换

    这两天做题遇见了进制转换的问题 在网上看了他人的想法后自己的一些实践 目录 关于进制转换的问题和思考 1 将十进制以下的数据转换为十进制 2 将十进制的数据转换为十进制以上 3 十六进制转换成十进制 关于进制转换的问题和思考 1 高于十进制
  • 【知识学习】Git:如何利用Git实现Matlab代码版本管理

    目录 1 版本控制 1 1 版本控制是什么 1 2 常见的版本控制器 2 Git环境配置 2 1 软件下载 2 2 Git配置 3 Git 基本理论 4 Git项目搭建 4 1 本地搭建仓库 4 2 使用码云 Github 5 Git分支常
  • Arduino教程四——u8g2库OLED屏幕显示

    1 功能 u8g2库OLED屏幕显示英文 OLED 0 96寸 128X64 对于这几个参数进行说明 0 96指的是屏幕的显示尺寸0 96inch 128 64指的是屏幕的分辨率为128 64 128列64行 u8g2 屏幕显示 固定搭配
  • Arthas(阿尔萨斯) 的安装与使用

    arthas官方文档 https arthas aliyun com doc index html点击此处进入 是Alibaba开源的Java诊断工具 深受开发者喜爱 在线排查问题 无需重启 动态跟踪Java代码 实时监控JVM状态 Art
  • 11月20日 如何在场景开启Debug,自定义AI任务,EQS,创建自己的环境任务,使用Pawn环境检测来检测周围的环境,让AI动作更顺滑(动画混合

    如何在场景开启Debug 按F1开启线框模式 按 打开Debug数据栏 按数字键3打开EQSDEBUG 开启距离场debug 自定义AI任务 创建BTTask RangeAttack h Fill out your copyright no
  • 使用msfconsole拿到win2008 R2的shell并进行维权二(权限维持)

    声明 本博文仅供学习交流使用 不可用于任何违法犯罪活动 由此带来的任何法律后果 本人概不承担 使用msfconsole拿到win2008 R2的shell并进行维权二 权限维持 四 维权后门 4 1查询服务器信息 4 1 1查看当前用户以及
  • linux挂载磁盘超时问题解决记录

    上周公司一台k8节点nfs挂载超时 同事反映 这个盘挂载是有问题 开始各种排查 都没问题 最后排查到nfs server节点iptables规则限制所致 记录一下这次的排查过程 1 server端排查 看配置 检查 showmount e
  • 拆机小白的联想小新I1000内存升级过程

    终于有时间升级一下我的4GB内存的联想小新I1000了 原想着如果可以扩展的话 内存升到最高 硬盘加装一个不用太大的SSD硬盘 把系统就装在SSD上面 机械就只作为一个存储的硬盘 可惜联想小新I1000不支持呀 内存条和硬盘都只是一个卡槽
  • 三、OpenCV图像的预处理——二值化与自适应阈值

    教程汇总 python基础入门系列 定义 图像的二值化 就是将图像上的像素点的灰度值设置为0或255 也就是将整个图像呈现出明显的只有黑和白的视觉效果 一幅图像包括目标物体 背景还有噪声 要想从多值的数字图像中直接提取出目标物体 常用的方法
  • 矩阵求秩

    矩阵的秩怎么计算 这个问题一下子我居然不知道怎么下手 虽然本科的时候学过线性代数 但是好久不用 很多东西都忘了 今天略微梳理一下吧 最简单直观的方法 化成行最简形 或行阶梯形 然后数一下非零行数 例如 将矩阵做初等行变换后 非零行的个数叫行
  • Python 实现多个类别数据的直方图区间层面累积堆叠

    Python 实现多个类别数据的直方图区间层面累积堆叠 数据可视化是数据科学中不可缺少的一部分 它能够帮助我们更好地理解和分析数据 直方图是一种常用的数据可视化方法 它可以将数据分布情况以柱状图的形式展示出来 如果存在多个类别的数据 我们可
  • mysql convert函数 解决读取double为科学计数法问题

    convert顾名思义就是转化 cast差不多 MySQL CONVERT 函数 参考手册 为什么需要这个函数 mysql是弱类型的 where stringcol 1 and intcol 1 都行 会自动转化 那我为什么还要呢 mysq
  • 错误:编码GBK的不可映射字符解决方案(亲测有效)

    CMD编译运行JAVA程序出现的错误 原要求 这次作业要求用命令行输出 但是java命令后显示的是中文乱码 也有的出现错误 编码GBK的不可映射字符 原因 引用 由于JDK是国际版的 我们在用javac exe编译时 编译程序首先会获得我们
  • 插入mysql,Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:Data truncation: Data too long

    插入mysql 报错 Error updating database Cause com mysql cj jdbc exceptions MysqlDataTruncation Data truncation Data too long
  • Legal or Not HDU - 3342 拓扑排序 判环

    这道题的意思是 给你n个点 m行关系数据 左 gt 右 判断有无环的出现 方法 直接拓扑排序 如果能正常排序完 这个就是无环的有向图DAG 如果不能 在拓扑排序的过程中有些点的入度经过去边操作之后一直不为零 就是有环的存在 include
  • GPT4.0一句话实现各类图表制作,让数据可视化变得更简单!类图、流程图、ER图.....

    不知道大家有没有被ER建模工具复杂的操作按钮给困扰过 在作者学习ER建模时 曾希望能直接画出类图 但最终还是不得不学习繁琐的操作流程 然而 随着GPT的出现 AI现在也可以绘制UML图了 今天要向大家分享一个AI工具 它能够借助强大的GPT
  • STM32多中断模式

    1 基本概念 ARM Coetex M3内核共支持256个中断 其中16个内部中断 240个外部中断和可编程的256级中断优先级的设置 STM32目前支持的中断共84个 16个内部 68个外部 还有16级可编程的中断优先级的设置 仅使用中断
  • STM32与BLE蓝牙通信 Android APP配置(一)

    事物的难度远远低于对事物的恐惧 0 前言 最近完成了一个基于BLE蓝牙通信的简单APP 在这里记录下来 供大家参考希望能给需要的人解决疑惑 这个APP中一共是两个界面 第一个界面实现打开蓝牙 关闭蓝牙 扫描蓝牙和显示扫描的结果 通过选择扫描
  • 【接口测试基础】第十四篇

    iHRM项目实战 简介 功能模块 技术架构 前端 以Node js为核心的Vue js前端技术生态架构 后端 SprintBoot SprintCloud SprintMVC SprintData Spring全家桶 MySQL Redis
  • java list stream 去除 null_Stream流的这些操作,你得知道,对你工作有很大帮助

    作者 扬帆 起航 原文 https blog csdn net qq 43677736 Stream流 Stream 流 是一个来自数据源的元素队列并支持聚合操作 元素是特定类型的对象 形成一个队列 Java中的Stream并不会存储元素