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

Java的流表达式使用

一、流的创建

流可以从多种数据源创建,包括集合、数组、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.dtcms.com/a/47084.html

相关文章:

  • ClickHouse深度解析:OLAP领域的性能怪兽
  • 爬虫系列之【数据解析之JSON】《三》
  • leetcode日记(74)合并两个有序数组
  • 蓝耘元生代智算云:解锁百亿级产业变革的算力密码
  • 【STM32安全性研究】STM32F103RCT6固件读取
  • 计算机毕业设计SpringBoot+Vue.js常规应急物资管理系统(源码+文档+PPT+讲解)
  • c++中explicit的作用
  • UI组件库及antd
  • Java 泛型(Generics)详解与使用
  • python多线程之ThreadLocal 笔记
  • 编程题 - 明明的随机数【JavaScript/Node.js解法】
  • 【知识】torchrun 与 torch.multiprocessing.spawn 的对比
  • python爬虫系列课程5:JavaScript语法介绍
  • 【Java】多线程篇 —— 线程池
  • 蓝桥杯 灯笼大乱斗【算法赛】
  • 设计模式之命令模式
  • Git操作指南:分支合并、回退及其他重要操作
  • json介绍、python数据和json数据的相互转换
  • GPIO概念
  • 分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机多特征分类预测
  • js加密之延伸requestAnimationFrame
  • 【Block总结】SAFMN,空间自适应调制与局部特征增强的协同设计|即插即用
  • 面试基础 ---深入解析JDK8类加载机制
  • Python核心技术,Django学习基础入门教程(附环境安装包)
  • iOS UICollectionViewCell 点击事件自动化埋点
  • 计算机毕业设计SpringBoot+Vue.js相亲网站(源码+文档+PPT+讲解)
  • Unity中动态切换光照贴图LightProbe的方法
  • C++实现3D(EasyX)详细教程
  • DeepSeek蒸馏TinyLSTM实操指南
  • deepseek使用记录18——文化基因之文化融合