当前位置: 首页 > news >正文

Java基础——stream

  • stream是什么?
  • stream优点
  • stream和集合的区别
  • stream的创建
  • steam的操作
  • 从steam中取值

stream是什么?

stream可以简化对集合的操作,具体操作由流内部实现,而无需用户自行实现过程

stream优点

对于以下ArrayList

List<String> words = new ArrayList<>();
words.add("tom");
words.add("john");

如果我们要统计其长度大于4的字符串,需要循环进行遍历

int count = 0;
for (String s : words) {if (s.length() >= 4) {count++;}
}

而使用stream,无需遍历和计数,只需要指定做什么,而无需关注怎么做

long count = words.stream().filter(s -> s.length() >=4).count();

stream和集合的区别

  • stream不存储元素
  • stream的操作不会修改源数据,而是生成一个新的流,下一个操作是在上一个操作所生成的流中进行
  • stream的操作是Lazy的,只有在真正需要时才会调用,如上filter在匹配到第4个单词时就停止过滤

stream的创建

对于任何实现类Collection的子类,都可通过stream()方法获取流

List<String> list= new ArrayList<>();
Stream<String> stream = list.stream();

对于个别元素,可用Stream.of()构建

Stream<String> stream = Stream.of("tom", "john");

对于数组,可用Arrays.stream()构建

String[] strings=new String[]{"tom","john"};
Stream<String> stream = Arrays.stream(strings);

构建空的stream,可通过泛型指定其元素类型

Stream<Object> stream = Stream.empty();

使用generage生成无限stream,如生成随机数流

Stream<Double> stream = Stream.generate(Math::random);

steam的操作

filter()可指定流的过滤条件,如将长度大于3的元素筛选出来

List<String> list = new ArrayList<>();
Stream<String> stringStream = list.stream().filter(s -> s.length() > 3);

map()可指定流的转换条件,如将单词转为小写

Stream<String> stringStream = list.stream().map(s -> s.toLowerCase());

limit()可截取流,如生成10个随机数流

Stream<Double> stream = Stream.generate(Math::random).limit(10);

distinct()可去除流中的重复元素

Stream<String> stream = list.stream().distinct();

sort()可对流进行排序,可调用默认比较器或自行定义比较器

Stream<String> sort1 = list.stream().sorted();
Stream<String> sort2 = list.stream().sorted(Comparator.comparing(String::length).reversed());

从steam中取值

以下从数组的stream中取出最大值,

OptionalInt max = Arrays.stream(new int[]{1, 2, 3}).max();
int i = max.orElse(0);

相关文章:

Java基础——stream

流 stream是什么&#xff1f;stream优点stream和集合的区别stream的创建steam的操作从steam中取值 stream是什么&#xff1f; stream可以简化对集合的操作&#xff0c;具体操作由流内部实现&#xff0c;而无需用户自行实现过程 stream优点 对于以下ArrayList List<Strin…...

Spring Quartz 持久化解决方案

Quartz是实现了序列化接口的&#xff0c;包括接口&#xff0c;所以可以使用标准方式序列化到数据库。 而Spring2.5.6在集成Quartz时却未能考虑持久化问题。 Spring对JobDetail进行了封装&#xff0c;却未实现序列化接口&#xff0c;所以持久化的时候会产生NotSerializable问题&…...

基于Java+SpringBoot+Vue前后端分离火锅店管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

Unity——导航系统补充说明

一、导航系统补充说明 1、导航与动画 我们可以通过设置动画状态机的变量&#xff0c;让动画匹配由玩家直接控制的角色的移动。那么自动导航的角色如何与动画系统结合呢&#xff1f; 有两个常用的属性可以获得导航代理当前的状态&#xff1a; 一是agent.velocity&#xff0c;…...

nginx实现负载均衡load balance

目录 nginx实现负载均衡load balance相关算法负载均衡https的访问后端的real server是否知道真正访问的用户的IP地址健康检查提升负载均衡的并发数量七层负载均衡和四层负载均衡七层负载均衡四层负载均衡四层和七层的区别502错误 nginx实现负载均衡load balance 准备&#xff…...

淘宝订单接口:连接消费者与商家的桥梁

当我们谈论淘宝订单接口时&#xff0c;我们谈论的是淘宝网为卖家和买家提供的一个用于处理订单的核心系统。通过这个接口&#xff0c;卖家可以接收订单、处理订单状态&#xff0c;并更新买家和平台的状态信息&#xff1b;买家则可以实时追踪自己的订单状态&#xff0c;更好地掌…...

数据结构-第一期——数组(Python)

目录 00、前言&#xff1a; 01、一维数组 一维数组的定义和初始化 一维变长数组 一维正向遍历 一维反向遍历 一维数组的区间操作 竞赛小技巧&#xff1a;不用从a[0]开始&#xff0c;从a[1]开始 蓝桥杯真题练习1 读入一维数组 例题一 例题二​ 例题三 实战训…...

八 动手学深度学习v2 ——卷积神经网络之卷积+填充步幅+池化+LeNet

目录 1. 图像卷积总结2. 填充和步幅 padding和stride3. 多输入多输出通道4. 池化层5. LeNet 1. 图像卷积总结 二维卷积层的核心计算是二维互相关运算。最简单的形式是&#xff0c;对二维输入数据和卷积核执行互相关操作&#xff0c;然后添加一个偏置。核矩阵和偏移是可学习的参…...

SparkCore

第1章 RDD概述 1.1 什么是RDD RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做弹性分布式数据集&#xff0c;是Spark中最基本的数据抽象。代码中是一个抽象类&#xff0c;它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 RDD类比工厂生产。 …...

配置 Windows 系统环境变量

直接按键盘上面的 WINS 打开 Windows 搜索 搜索“编辑系统环境变量” 也可以右键此电脑->属性->高级系统设置打开相同的界面 点击环境变量 一般添加就是添加在框出的 Path 里面&#xff0c;双击可以看到现有的环境变量并进行编辑 例如我在博客中写把 Java 的 jdk 解压好…...

【计算机视觉】图片文件格式的讲解

文章目录 一、图片的压缩二、计算机表示颜色三、JPG和PNG3.1 JPG3.2 PNG 一、图片的压缩 图片文件格式有可能会对图片的文件大小进行不同程度的压缩&#xff0c;图片的压缩分为有损压缩和无损压缩两种。 有损压缩。指在压缩文件大小的过程中&#xff0c;损失了一部分图片的信…...

2023最全的性能测试种类介绍,这6个种类特别重要!

系统的性能是一个很大的概念&#xff0c;覆盖面非常广泛&#xff0c;包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等&#xff0c;性能测试就是描述测试对象与性能相关的特征并对其进行评价而实施的一类测试。 性能测试是一个统称&#xff0c;它其实包…...

代码随想录算法训练营19期第43天

1049. 最后一块石头的重量 II 视频讲解&#xff1a;动态规划之背包问题&#xff0c;这个背包最多能装多少&#xff1f;LeetCode&#xff1a;1049.最后一块石头的重量II_哔哩哔哩_bilibili 代码随想录 初步思路&#xff1a;动态规划。 总结&#xff1a;套用01背包 dp[j…...

微信小程序wx.previewImage实现图片预览

在微信小程序中&#xff0c;wx.previewImage函数用于预览图片&#xff0c;可以将一组图片以轮播的方式展示给用户&#xff0c;并支持用户手势操作进行切换。 使用wx.previewImage函数需要传入一个参数对象&#xff0c;该对象包含以下属性&#xff1a; current: String&#x…...

Java实现Modbus读写数据

背景 由于当时项目周期赶&#xff0c;引入了一个PLC4X组件&#xff0c;上手快。接下来就是使用这个组件遇到的一些问题&#xff1a; 关闭连接NioEventLoop没有释放导致oom设计思想是一个设备一个连接&#xff0c;而不是一个网关一个连接连接断开后客户端无从感知 前两个问题解…...

C++11新特性⑤ | 仿函数与lambda表达式

目录 1、引言 2、仿函数 3、lambda表达式 3.1、lambda表达式的一般形式 3.2、返回类型说明 3.3、捕获列表的规则 3.4、可以捕获哪些变量 3.5、lambda表达式给编程带来的便利 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…...

解决websocket不定时出现1005错误

后台抛出异常如下&#xff1a; Operator called default onErrorDropped reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.IllegalArgumentException: WebSocket close status code does NOT comply with RFC-6455: 1005 Caused by: java.lang.IllegalArgume…...

文章内容生成随机图像,并将这些图像上链

一、需求背景 在当前的互联网时代,信息越来越快速地传播,一篇好的文章不仅需要有吸引人的文字内容,还需要有精美的配图。但是,对于某些只有文字,而没有图片的文章,我们可以使用程序去生成随机的图片来作为文章的配图。 本文将详细介绍如何使用Java语言实现文章内容生成…...

l8-d9 UDP通信实现

一、函数接口扩展与UDP通信实现流程 1.write/read到send/recv 函数原型&#xff1a; ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t recv(int sockfd, void *buf, size_t len, int flags); 前三个参数同read/write一样&#xff1b; ssize_t rea…...

MongoDB复杂聚合查询与java中MongoTemplate的api对应

MongoDB聚合json脚本 db.getCollection("202303_refund").aggregate([{"$match": {"courseType": "常规班课","teacherRefundReasonCheck": true,"teacherId": {"$in": [7544]},"createTime"…...

保姆级教程:用ESP-IDF Monitor和Heap Tracing给LVGL任务栈“拍个X光”

ESP32-S3深度调试&#xff1a;用Heap Tracing与Monitor透视LVGL内存瓶颈 当LVGL动画在ESP32-S3上随机崩溃时&#xff0c;大多数开发者会本能地调整栈大小参数——这就像给发烧病人直接开退烧药&#xff0c;却不去检查感染源。本文将带您使用ESP-IDF的专业诊断工具&#xff0c;…...

虚幻引擎蓝图调试实战:从“无访问”错误到IsValid的防御性编程

1. 当蓝图突然报错"无访问"时该怎么办 第一次在虚幻引擎里看到"‘无访问’正在尝试读取属性"这个报错时&#xff0c;我整个人都是懵的。明明昨天运行得好好的功能&#xff0c;今天突然就崩溃了。这种情况特别常见&#xff0c;尤其是当你修改了一些看似无关…...

Bili2Text:B站视频转文字的智能革命

Bili2Text&#xff1a;B站视频转文字的智能革命 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 副标题&#xff1a;还在为视频笔记熬夜&#xff1f;这款工具让…...

从国赛真题到实战演练:蓝桥杯CTF网络安全竞赛核心题型深度剖析

1. 逆向工程实战&#xff1a;从加密程序到Flag还原 去年蓝桥杯CTF国赛的第一道逆向题让不少选手印象深刻。题目给出一个名为encodefile的可执行程序和一个加密后的数据文件enc.dat&#xff0c;要求还原原始flag内容。这类题型在CTF中非常典型&#xff0c;主要考察选手对程序逻辑…...

5步构建适合你的Yuzu版本管理系统:写给模拟器玩家的效率指南

5步构建适合你的Yuzu版本管理系统&#xff1a;写给模拟器玩家的效率指南 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 还在为Yuzu模拟器版本选择而困惑&#xff1f;为什么新游戏在最新版模拟器上反而卡顿&#x…...

如何用AI提升视频画质?Video2X全攻略:从技术原理到实践应用

如何用AI提升视频画质&#xff1f;Video2X全攻略&#xff1a;从技术原理到实践应用 【免费下载链接】video2x A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley II, 2018. 项目地址: https://gitcode.com/…...

从数据到洞察:如何利用2024版建筑高度SHP数据,5步完成城市热岛效应初步分析

从数据到洞察&#xff1a;如何利用2024版建筑高度SHP数据&#xff0c;5步完成城市热岛效应初步分析 城市热岛效应是城市化进程中普遍存在的环境问题&#xff0c;表现为城市中心区域温度明显高于周边郊区的现象。这种现象不仅影响居民的生活质量&#xff0c;还会加剧能源消耗和空…...

百川2-13B-4bits量化版温度参数研究:OpenClaw任务稳定性影响

百川2-13B-4bits量化版温度参数研究&#xff1a;OpenClaw任务稳定性影响 1. 温度参数与自动化任务的微妙关系 上周我在调试OpenClaw自动处理周报的任务时&#xff0c;遇到了一个奇怪现象&#xff1a;同样的提示词&#xff0c;有时候生成的周报结构清晰、重点突出&#xff0c;…...

MySQL数据同步神器Canal实战:从配置到Java客户端开发全流程

MySQL数据同步神器Canal实战&#xff1a;从配置到Java客户端开发全流程 在数据驱动的时代&#xff0c;实时数据同步已成为现代应用架构的核心需求。想象一下电商平台的库存实时更新、金融系统的交易流水同步、物流系统的状态追踪——这些场景都离不开高效可靠的数据同步机制。…...

OpenVoice语音合成技术全解析:从痛点突破到多场景落地实践

OpenVoice语音合成技术全解析&#xff1a;从痛点突破到多场景落地实践 【免费下载链接】OpenVoice 项目是MyShell AI开源的即时语音克隆技术OpenVoice&#xff0c;旨在提供一种能够快速从少量语音样本中准确复制人类声音特征&#xff0c;并实现多种语言及语音风格转换的解决方案…...