Java的流表达式使用

devtools/2025/3/3 15:58:09/

一、流的创建

流可以从多种数据源创建,包括集合、数组、I/O资源等:

java
// 从集合创建
List list = Arrays.asList(1, 2, 3);
Stream stream = list.stream();

// 从数组创建
int[] array = {1, 2, 3};
IntStream intStream = Arrays.stream(array);

// 通过Stream.of创建
Stream stringStream = Stream.of(“A”, “B”, “C”);

二、中间操作(Intermediate Operations)

中间操作返回新流,支持链式调用,但不会立即执行:

​过滤(Filter)​​
筛选符合条件的元素:

java
list.stream().filter(n -> n % 2 == 0); // 筛选偶数

​映射(Map)​​
转换元素类型或提取属性:

java
list.stream().map(String::toUpperCase); // 字符串转大写

​排序(Sorted)​​
按自然顺序或自定义比较器排序:

java
list.stream().sorted(Comparator.reverseOrder()); // 降序排列

​去重(Distinct)​​
去除重复元素:

java
list.stream().distinct();

​截取与跳过(Limit/Skip)​​

java
list.stream().limit(5); // 取前5个元素
list.stream().skip(2); // 跳过前2个元素

三、终止操作(Terminal Operations)

终止操作触发流的执行并返回结果:

​收集结果(Collect)​​
将流转换为集合或聚合数据:

java
List names = list.stream()
.filter(s -> s.startsWith(“A”))
.collect(Collectors.toList());

​遍历(ForEach)​​
对每个元素执行操作:

java
list.stream().forEach(System.out::println);

​统计(Count/Sum/Max/Min)​​

java
long count = list.stream().count(); // 元素总数
int sum = list.stream().mapToInt(Integer::intValue).sum(); // 求和

​归约(Reduce)​​
自定义聚合逻辑:

java
int sum = list.stream().reduce(0, Integer::sum); // 累加求和

四、并行流(Parallel Stream)

通过并行处理提升大数据集性能:

java
int sum = list.parallelStream()
.mapToInt(n -> n * n)
.sum(); // 并行计算平方和
注意:并行流适用于计算密集型任务,但可能因线程开销导致小数据集效率降低。

五、注意事项

​流的不可复用性​
流一旦被终止操作消费,不可重复使用。
​惰性求值​
中间操作延迟执行,直到终止操作触发。
​避免副作用​
推荐使用纯函数式操作,而非在流中修改外部变量。


http://www.ppmy.cn/devtools/164221.html

相关文章

我通过AI编程完成了第一个实用程序

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

Kubernetes Service服务发现dns之CoreDNS

文章目录 背景什么是Service、服务发现、Endpoint什么是CoreDNSCoreDNS 的工作原理 常用命令coredns 运行状态根据服务名,判断某个服务dns解析是否正常 背景 Kubernetes 集群内部的服务发现是微服务架构的核心基础,而 DNS 服务则是实现这一机制的关键组…

【图像亮度、对比度调整,直方图均衡化及图像平滑】

图像增强与基本处理 目录 图像增强与基本处理目标知识点1. 亮度调整2. 对比度调整3. 直方图均衡化4. 图像平滑(高斯滤波)5. 图像平滑(中值滤波) 目标 学习图像增强的基本方法,包括亮度调整、对比度调整、直方图均衡化…

SheetDataMerge合并工作表(excel)内多行同类数据的小工具。

SheetDataMerge SheetDataMerge是一款简单易用的工具,能够快速合并工作表中的多行同类数据。虽然Excel自带的数据透视表也能实现类似功能,但它属于进阶操作,需要一定的学习成本。 相比之下,SheetDataMerge的操作非常便捷&#xff…

hook和钩子函数

1.介绍 钩子函数(Hook Function) 本质上是一种回调callback机制,它允许程序在特定事件发生时执行用户自定义代码。一种实现方式。 ✔ Hook 是一种更广义的概念,指拦截或修改函数行为,而钩子函数是 Hook 的一种具体实…

【网络安全 | 漏洞挖掘】利用文件上传功能的 IDOR 和 XSS 劫持会话

未经许可,不得转载。 本文涉及漏洞均已修复。 文章目录 前言正文前言 想象这样一个场景:一个专门处理敏感文档的平台,如保险理赔或身份验证系统,却因一个设计疏漏而成为攻击者的“金矿”。在对某个保险门户的文件上传功能进行测试时,我意外发现了一个可导致大规模账户接管…

Elasticsearch简单学习

1、依赖的导入 <!--ES依赖--> <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>2、客户端链接 RestHighLevelClient client new RestHigh…

Android Activity启动流程详解

目录 Activity 启动流程详细解析 1. 应用层发起启动请求 1.1 调用 startActivity() 1.2 通过 Instrumentation 转发请求 2. 系统服务处理&#xff08;AMS 阶段&#xff09; 2.1 Binder IPC 通信 2.2 AMS 处理流程 2.3 跨进程回调 ApplicationThread 3. 目标进程初始化…