Java8 Stream API在集合上执行复杂的数据处理查询

Java 8 引入的 Stream API 是一个高级工具,用于在集合上执行复杂的数据处理查询。Stream API 通过提供一系列的中间操作和最终操作,支持声明式处理(类似于SQL声明式语句)并且可以轻松使用多核架构。

创建Stream流

创建Stream 流的方式有多中,我们可以从集合或者数组中进行创建

collection.stream()Arrays.stream(array)

或者从静态工厂中进行创建:

Stream.of(), IntStream.range()

同样也可以从文件中生成流:

Files.lines(Path path)

对流进行操作

我们对流进行操作之后并不会产生最终结果,通常来说是懒加载的,并且可以链式调用。

  • filter操作:设置一定的操作对Stream中所有的元素进行过滤
  • map操作:转换元素
  • sorted操作:对流中的数据进行排序
  • limit操作:限制流中的元素数据数量
  • ditinct操作:去除重复元素

最终操作

经过这些最终操作之后,不能再对流进行操作。一些常见的最终操作包括:

  • forEach:遍历每一个元素
  • collect:将流转换成不同类型的结果
  • reduce:通过某个二元操作合并流中的元素
  • count操作:返回流中元素的个数

简单示例

List<String> myList = Arrays.asList("apple", "banana", "cherry", "date");List<String> filtered = myList.stream().filter(s -> s.startsWith("a")) // 中间操作:过滤以"a"开头的字符串.map(String::toUpperCase)       // 中间操作:转换成大写.collect(Collectors.toList());  // 最终操作:收集到List中filtered.forEach(System.out::println); // 输出过滤后的列表

注意

需要注意的一点是 Stream一旦执行了最终操作,就会被消耗掉,也就无法再次使用,如果我们需要再次使用相同的数据源,就需要重新创建一个新的Stream。另外,Stream的操作一般不会改变原始的数据源,通常是会产生一个新的数据集。

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

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

相关文章

HTML+VUE3组合式+ELEMENT的容器模板示例(含侧栏导航,表格,...)

一个简单的在html中使用Vue3及Element-plus vue-icons的整合示例&#xff1a; 一、示例截图 二、文件代码 直接复制到html文件在浏览器打开即可预览 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title&g…

CCleaner系统优化与隐私保护工具,中文绿色便携版 v6.23.11010

01 软件介绍 CCleaner 是一款高级的系统优化工具&#xff0c;其设计宗旨在于彻底清理 Windows 操作系统中积累的无用文件和冗余的注册表项。此举旨在显著提升计算机的运行效率并回收磁盘空间。该软件拥有高效的能力&#xff0c;可以清除包括临时文件、浏览器缓存及其历史记录在…

哪些设计模式,你使用过哪些设计模式

Java框架中运用了多种设计模式&#xff0c;以下是一些具体的例子以及它们在框架中的应用&#xff1a; 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a; 确保一个类只有一个实例&#xff0c;并提供全局访问点。例如&#xff0c;Java中的Runtime类使用了单例模式…

08 - hive的集合函数、高级聚合函数、炸裂函数以及窗口函数

目录 1、集合函数 1.1、size&#xff1a;集合中元素的个数 1.2、map&#xff1a;创建map集合 1.3、map_keys&#xff1a; 返回map中的key 1.4、map_values: 返回map中的value 1.5、array 声明array集合 1.6、array_contains: 判断array中是否包含某个元素 1.7、sort_a…

python中多态的概念及简单样例

目录 1、多态概念及关键要素&#xff1a; 2、代码样例&#xff1a; 1、多态概念及关键要素&#xff1a; 多态是面向对象编程中一个重要的概念&#xff0c;它允许不同类的对象对同一消息做出不同的响应。简单来说&#xff0c;多态性是指相同的方法调用可以在不同的对象上产生不…

UIKit之UIButton

功能需求&#xff1a; 点击按钮切换按钮的文字和背景图片&#xff0c;同时点击上下左右可以移动图片位置&#xff0c;点击加或减可以放大或缩小图片。 分析&#xff1a; 实现一个UIView的子类即可&#xff0c;该子类包含多个按钮。 实现步骤&#xff1a; 使用OC语言&#xf…

TypeScript常见面试题第七节

题目三十一:TypeScript 中声明合并的工作原理? 一、讲解视频 TS面试题三十一:TypeScript 中声明合并的工作原理? 二、题目解析 本题目考察对于 ts 中声明合并知识的了解,“声明合并”是指编译器将针对同一个名字的两个独立声明合并为单一声明。 合并后的声明同时拥有原先…

每日资讯——OpenAI与谷歌相争,火药味甚浓

OpenAI与苹果达成合作&#xff0c;ChatGPT或集成至IOS18 AI语音助手存在”幻觉“问题&#xff0c;或将集成至ChatGPT免费版 整合音频转录、文本转语音等功能的软件。奥特曼的终极目标是开发类似电影《她》中&#xff0c;可高度响应的虚拟助手&#xff0c;提升苹果Siri等现有语…

HCIP的学习(14)

过滤策略—filter-policy ​ 思科中&#xff1a;分发列表 ​ 过滤策略是只能够针对于路由信息进行筛选&#xff08;过滤&#xff09;的工具&#xff0c;而无法针对于LSA进行过滤。 在R4的出方向上配置过滤策略&#xff0c;使得R1不能学习到23.0.0.0/24路由信息1、抓取流量 […

Sping源码(七)—ConfigurationClassPostProcessor ——@PropertySources解析

序言 先来简单回顾一下ConfigurationClassPostProcessor大致的一个处理流程&#xff0c;再来详细的讲解PropertySources注解的处理逻辑。 详细的步骤可参考ConfigurationClassPostProcessor这篇帖子。 流程图 从获取所有BeanDefinition -> 过滤、赋值、遍历 -> 解析 -&…

自建WSUS更新服务器完成内网的安全补丁更新

一、适用场景 1、企业内部网络无法访问外网&#xff0c;所以搭建WSUS服务器&#xff0c;可以让内网环境进行更新补丁。 2、校园内部的电脑实训室一般不用外网资源&#xff0c;偶尔开启外网使用时&#xff0c;电脑实训室集体自动更新占用外网资源量大&#xff0c;所以搭建WSUS服…

项目文档分享

Hello , 我是小恒。提前祝福妈妈母亲节快乐 。 本文写一篇初成的项目文档 &#xff08;不是README.md哈&#xff09;&#xff0c;仅供参考 项目名称 脚本存储网页 项目简介 本项目旨在创建一个网页&#xff0c;用于存储和展示各种命令&#xff0c;用户可以通过粘贴复制命令到…

【深耕 Python】Quantum Computing 量子计算机(6)计算<m|V|n>数值积分

写在前面 往期量子计算机博客&#xff1a; 【深耕 Python】Quantum Computing 量子计算机&#xff08;1&#xff09;图像绘制基础 【深耕 Python】Quantum Computing 量子计算机&#xff08;2&#xff09;绘制电子运动平面波 【深耕 Python】Quantum Computing 量子计算机&…

【前端】HTML实现个人简历信息展示页面

文章目录 前言一、 综合案例&#xff1a;个人简历信息展示页面 前言 这篇博客仅仅是对HTML的基本结构进行了一些说明&#xff0c;关于HTML的更多讲解以及CSS、Javascript部分的讲解可以关注一下下面的专栏&#xff0c;会持续更新的。 链接&#xff1a; Web前端学习专栏 下面我…

039——解决室内不能使用GPS问题

目录 引入 GUI整改 client添加GPS分析 完善服务器网络通讯部分代码 添加GPS的BSW层 GPS操作部分代码&#xff08;相当于驱动&#xff09; 效果展示 项目管理操作 引入 最近在写论文加上出去玩了一圈所以停更了一段时间。上次咱们GPS有个室内用不了的问题&#xff0c;咱…

【Python从入门到进阶】54、使用Python轻松操作SQLite数据库

一、引言 1、什么是SQLite SQLite的起源可以追溯到2000年&#xff0c;由D. Richard Hipp&#xff08;理查德希普&#xff09;所创建。作为一个独立的开发者&#xff0c;Hipp在寻找一个能够在嵌入式系统中使用的轻量级数据库时&#xff0c;发现现有的解决方案要么过于庞大&…

SpringCloud使用Nacos作为配置中心实现动态数据源切换

一、Nacos-Server 了解Nacos可以直接阅读官方文档 使用Nacos&#xff0c;我们需要有Nacos-Server&#xff0c;此处就不使用官方提供的release版本了&#xff0c;而是自己编译&#xff0c;因为本来就是Java开发的&#xff0c;所以对于Javaer来说也没啥难度&#xff01; git c…

linux安装clamav病毒扫描与删除

ClamAV介绍 ClamAV是Linux操作系统一款免费的杀毒工具&#xff0c;通过命令执行病毒库升级、查找病毒和删除病毒。 安装ClamAV 方法一&#x1f4a1; Tips&#xff1a;在CentOS操作系统上安装ClamAV&#xff0c;请分别执行以下命令 yum install epel-release -y yum install cla…

2024OD机试卷-虚拟理财游戏 (java)

题目:虚拟理财游戏 题目描述 在一款虚拟游戏中生活,你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。 现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。 你要在可接受范围内选择最优的投资方式获得最大…

过拟合和欠拟合的学习

1.什么拟合 就是说这个曲线能不能很好地描述某些样本数据&#xff0c;并且拥有较好的泛化能力。 2.什么是过拟合 过拟合就是曲线太过于贴切训练数据的特征了&#xff0c;在训练集上表现得非常优秀&#xff0c;近乎完美的预测/区分了所有得数据&#xff0c;但是在新的测试集上…