什么是 Stream

news2025/5/10 0:26:33

Stream 是对集合对象功能的增强,它不是集合,也不存储数据,而是从集合中抽象出一条数据通道,让你可以用链式方式一步步处理数据。

🔧 常见操作分类

类型方法举例
创建stream(), Stream.of(), Arrays.stream()
中间操作filter(), map(), sorted(), limit(), distinct()
终结操作collect(), forEach(), count(), reduce()

🔍 常用示例

1️⃣ 过滤 filter

List<String> names = Arrays.asList("Tom", "Jerry", "Tim");
names.stream()
     .filter(name -> name.startsWith("T"))
     .forEach(System.out::println);  // 输出 Tom, Tim

 2️⃣ 映射 map

List<String> names = Arrays.asList("tom", "jerry");
List<String> upper = names.stream()
                          .map(String::toUpperCase)
                          .collect(Collectors.toList()); // [TOM, JERRY]

3️⃣ 排序 sorted

List<Integer> nums = Arrays.asList(5, 2, 9);
List<Integer> sorted = nums.stream()
                           .sorted()
                           .collect(Collectors.toList()); // [2, 5, 9]

 

4️⃣ 去重 distinct

List<Integer> nums = Arrays.asList(1, 2, 2, 3);
List<Integer> unique = nums.stream()
                           .distinct()
                           .collect(Collectors.toList()); // [1, 2, 3]

5️⃣ 统计 count / max / min

long count = names.stream()
                  .filter(name -> name.length() > 3)
                  .count();

Optional<String> longest = names.stream()
                                .max(Comparator.comparingInt(String::length));

6️⃣ 规约 reduce

int sum = Arrays.asList(1, 2, 3, 4)
                .stream()
                .reduce(0, (a, b) -> a + b); // 10

7️⃣ 分组 groupingBy

List<String> items = Arrays.asList("apple", "banana", "apple", "orange");
Map<String, Long> result = items.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
// 输出: {banana=1, orange=1, apple=2}

⛓️ 链式调用示例:综合使用

List<String> result = Arrays.asList("apple", "banana", "cherry", "date")
    .stream()
    .filter(s -> s.length() > 5)
    .map(String::toUpperCase)
    .sorted()
    .collect(Collectors.toList());
// 输出: [BANANA, CHERRY]

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

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

相关文章

详解与HTTP服务器相关操作

HTTP 服务器是一种遵循超文本传输协议&#xff08;HTTP&#xff09;的服务器&#xff0c;用于在网络上传输和处理网页及其他相关资源。以下是关于它的详细介绍&#xff1a; 工作原理 HTTP 服务器监听指定端口&#xff08;通常是 80 端口用于 HTTP&#xff0c;443 端口用于 HT…

Moldflow模流分析教程

Moldflow模流分析教程&#xff1a;

计算机网络 3-4 数据链路层(局域网)

4.1 局域网LAN 特点 1.覆盖较小的地理范围 2.较低的时延和误码率 3.局域网内的各节点之间 4.支持单播、广播、多播 分类 关注三要素 &#xff08;出题点&#xff09; ①拓扑结构 ②传输介质 ③介质访问控制方式 硬件架构 4.2 以太网 4.2.1 层次划分 4.2.2 物理层标准…

单片机AIN0、AIN1引脚功能

目录 1. 模拟-数字转换器&#xff08;ADC&#xff09; 2. 交流电源&#xff08;AC&#xff09; 总结 这两部分有什么区别&#xff1f; 在这个电路图中&#xff0c;两个部分分别是模拟-数字转换器&#xff08;ADC&#xff09;和交流电源&#xff08;AC&#xff09;。以下是这…

如何增加 Elasticsearch 中的 primary shard 数量

作者&#xff1a;来自 Elastic Kofi Bartlett 探索增加 Elasticsearch 中 primary shard 数量的方法。 更多阅读&#xff1a; Elasticsearch&#xff1a;Split index API - 把一个大的索引分拆成更多分片 Elasticsearch&#xff1a;通过 shrink API 减少 shard 数量来缩小 El…

Java 并发性能优化:线程池的最佳实践

Java 并发性能优化&#xff1a;线程池的最佳实践 在 Java 并发编程的世界里&#xff0c;线程池堪称提高应用性能与稳定性的神器。恰如其分地运用线程池&#xff0c;能让我们在多线程任务调度时游刃有余&#xff0c;既能避免线程频繁创建销毁带来的开销&#xff0c;又能合理管控…

【综述】一文读懂卷积神经网络(CNN)

卷积神经网络&#xff08;Convolutional Neural Networks, CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff08;Feedforward Neural Networks&#xff09;&#xff0c;是深度学习&#xff08;deep learning&#xff09;的代表算法之一。本文旨在介绍CN…

阿里云集群开启debug

1、安装 kubectl Macos brew install kubectl Windows&#xff1a; https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/ 下载后&#xff0c;放到任意目录 2、配置连接信息 mac 将以下内容复制到计算机 $HOME/.kube/config 文件下: windows 不同集…

Unity之如何实现RenderStreaming视频推流

文章目录 前言引入 UnityRenderStreaming 的好处教程步骤 1:设置环境步骤 2: 创建项目步骤 3:安装软件包步骤 5:下载示例步骤 6:检查配置环境步骤 7:打开推流场景步骤 8: 准备用于流式传输的WebServer应用程序步骤 9: 运行 示例场景步骤 10:检查视频是否在浏览器中显示…

【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是桶排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、桶排序基础实现 原理 将数据分到有限数量的桶中&#xff0c;每个桶内部使用其他排序算法&#xff08;如插入排序或快速排序&#xff09;&#xf…

计算机三级:信息安全基础技术与原理(2.1密码技术简单梳理)

以下是密码学发展历程的表格归纳: ​发展阶段​时间范围​关键节点与标志性技术​技术突破与核心贡献​古典密码时期古代至19世纪• 公元前17世纪 克里特岛Phaistos圆盘(未知符号加密) • 中国西周“阴符”、北宋五言诗密码 • 1466年 艾伯蒂多表代替密码 • 1883年 克尔克霍…

【每天一个知识点】模式识别

“模式识别”是一种从数据中识别出规律、结构或趋势的技术&#xff0c;它广泛应用于人工智能、机器学习、图像处理、语音识别、自然语言处理等领域。简单来说&#xff0c;就是让计算机学会“看出”数据中的规律&#xff0c;比如&#xff1a; 从图像中识别人脸&#xff08;人脸识…

Codeforces Educational Round 177 Div. 2 【B题,C待补

B 二分 题意 样例 5 3 10 3 4 2 1 512 找最右边的L下标即可 思路 二分最靠右的L端点&#xff0c;R端点取最右端(n*k处)&#xff0c;找到后&#xff0c;答案就是L的位置(pos)&#xff0c;&#xff08;因为如果pos满足&#xff0c;则pos左边的所有下标都满足 代码 const in…

哈夫曼编码和哈夫曼树

哈夫曼编码&#xff08;Huffman Coding&#xff09; 是一种基于字符出现频率的无损数据压缩算法&#xff0c;通过构建哈夫曼树&#xff08;Huffman Tree&#xff09; 来生成最优前缀编码&#xff0c;使得高频字符用短编码&#xff0c;低频字符用长编码&#xff0c;从而实现高效…

中西面点实训室虚拟仿真操作平台

在餐饮行业蓬勃发展的当下&#xff0c;中西面点作为其中极具特色与市场需求的重要分支&#xff0c;对于专业人才的渴望愈发强烈。一个功能完备、设施先进的中西面点实训室&#xff0c;已然成为培养高素质面点专业人才的关键阵地。凯禾瑞华——实训室建设 一、中西面点实训室建设…

C++游戏服务器开发之⑦redis的使用

目录 1.当前进度 2.守护进程 3.进程监控 4.玩家姓名添加文件 5.文件删除玩家姓名 6.redis安装 7.redis存取命令 8.redis链表存取 9.redis程序结构 10.hiredisAPI使用 11.基于redis查找玩家姓名 12.MAKEFILE编写 13.游戏业务实现总结 1.当前进度 2.守护进程 3.进程监…

模拟投资大师思维:AI对冲基金开源项目详解

这里写目录标题 引言项目概述核心功能详解多样化的AI投资智能体灵活的运行模式透明的决策过程 安装和使用教程环境要求安装步骤基本使用方法运行对冲基金模式运行回测模式 应用场景和实际价值教育和研究价值潜在的商业应用与现有解决方案的对比局限性与发展方向 结论 引言 随着…

Cocos Creater打包安卓App添加隐私弹窗详细步骤+常见问题处理

最终演示效果,包含所有代码内容 + 常见错误问题处理 点击服务协议、隐私政策,跳转到相关网页, 点击同意进入游戏,不同意关闭应用 一,添加Activity,命名为MyLaunchActivity 二,编写MyLaunchActivity.java的内容 package com.cocos.game.launch;import android.os.Bund…

Android 热点二维码简单示例

Android 热点二维码简单示例 一、前言 Android 原生设置有热点二维码分享功能&#xff0c;有些系统应用也会有这个需求。 下面看看是如何实现的。 本文是一个比较简单的内容。 二、热点二维码生成实现 1、效果 整个应用就一个普通的Activity&#xff0c;显示一个按钮和二维…

JAVAEE(网络原理—UDP报头结构)

我们本篇文章要讲的是UDP的报头结构以及注意事项。 下面呢&#xff0c;我先说一下UDP是什么&#xff1f; 1.UDP是什么&#xff1f; UDP是一种网络协议。网络协议是计算机网络中&#xff0c;为了使不同设备之间能够准确、高效地进行数据交换和通信&#xff0c;而预先制定的一…