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

Java Stream 流式操作举例


🚀 Java Stream 流式操作实战示例

1. 基础示例:过滤、映射、收集

List<String> fruits = List.of("apple", "banana", "cherry", "avocado");List<String> result = fruits.stream().filter(f -> f.startsWith("a"))   // 过滤出 a 开头.map(String::toUpperCase)         // 转大写.toList();                        // 收集到 ListSystem.out.println(result); // [APPLE, AVOCADO]

2. Map 流式操作:找出成绩优秀的同学

Map<String, Integer> scores = Map.of("Tom", 90, "Jerry", 80, "Anna", 95);List<String> topStudents = scores.entrySet().stream().filter(e -> e.getValue() > 85)      // 过滤成绩 > 85.map(Map.Entry::getKey)              // 提取姓名.toList();System.out.println(topStudents); // [Tom, Anna]

3. 排序与去重

List<Integer> numbers = List.of(5, 3, 9, 1, 3, 5);List<Integer> result = numbers.stream().distinct()                          // 去重.sorted()                            // 排序.toList();System.out.println(result); // [1, 3, 5, 9]

4. 聚合计算:reduce

List<Integer> numbers = List.of(1, 2, 3, 4, 5);// 求和
int sum = numbers.stream().reduce(0, Integer::sum);System.out.println(sum); // 15

5. 分组统计:groupingBy

List<String> words = List.of("apple", "ant", "banana", "bat", "cherry");Map<Character, List<String>> grouped = words.stream().collect(Collectors.groupingBy(w -> w.charAt(0))); // 按首字母分组System.out.println(grouped);
// {a=[apple, ant], b=[banana, bat], c=[cherry]}

6. 统计操作

List<Integer> numbers = List.of(10, 20, 30, 40);IntSummaryStatistics stats = numbers.stream().mapToInt(Integer::intValue).summaryStatistics();System.out.println(stats.getCount()); // 4
System.out.println(stats.getSum());   // 100
System.out.println(stats.getAverage());// 25.0

7. 扁平化 flatMap

List<List<String>> nested = List.of(List.of("a", "b"),List.of("c", "d", "e")
);List<String> flat = nested.stream().flatMap(List::stream)   // 展平成单一流.toList();System.out.println(flat); // [a, b, c, d, e]

8. 文件流式处理(行处理)

try (Stream<String> lines = Files.lines(Path.of("data.txt"))) {long count = lines.filter(line -> line.contains("error")).count();System.out.println("包含 error 的行数: " + count);
} catch (IOException e) {e.printStackTrace();
}

9. 无限流:生成数据流

List<Integer> first10Even = Stream.iterate(0, n -> n + 2) // 从0开始,每次+2.limit(10)                                        // 取前10个.toList();System.out.println(first10Even); // [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

10. 并行流:加速处理大集合

List<Integer> numbers = IntStream.range(1, 1_000_000).boxed().toList();long count = numbers.parallelStream()  // 并行流.filter(n -> n % 2 == 0).count();System.out.println("偶数个数: " + count); // 500000

✨ 总结

  • 集合流stream(),常用 filter/map/sorted/distinct
  • Map流:从 entrySet()/keySet()/values() 开始
  • 聚合统计reduceCollectors.groupingBysummaryStatistics
  • 文件流Files.lines(),边读边处理,避免内存爆炸
  • 无限流Stream.iterate/generate,适合模拟数据流
  • 并行流parallelStream(),多核加速大数据处理

http://www.dtcms.com/a/366823.html

相关文章:

  • QT Creator 使用
  • 【一文了解】C#泛型
  • 数据库集成:使用 SQLite 与 Electron
  • 新电脑硬盘如何分区?3个必知技巧避免“空间浪费症”!
  • [技术革命]Harmonizer:仅20MB模型如何实现8K图像_视频的完美和谐化?
  • 鸿蒙:AppStorageV2状态管理和数据共享
  • 泛型的通配符
  • axios请求缓存与重复拦截:“相同请求未完成时,不发起新请求”
  • TDengine TIMETRUNCATE 函数用户使用手册
  • 野火STM32Modbus主机读取寄存器/线圈失败(三)-尝试将存贮事件的地方改成数组(非必要解决方案)(附源码)
  • 腾讯云国际代理:如何在腾讯云GPU服务器上部署私有化大模型?附GPU简介
  • SQLmap 完整使用指南:环境搭建 + 命令详解 + 实操案例
  • 打开 solidworks当前文件 所在的文件夹 python pywin32
  • Effective Python 第10条 - 用赋值表达式减少重复代码
  • 上位机知识篇---conda run
  • KingbaseES一体化架构与多层防护体系如何保障企业级数据库的持续稳定与弹性扩展
  • 关于在自然语言处理深层语义分析中引入公理化体系的可行性、挑战与前沿展望
  • 谁才是企业级开源平台的优选?OpenCSG与Dify、Coze、Langflow、Ollama 的差异化之路
  • 深度学习——ResNet 卷积神经网络
  • 高并发商城 商品为了防止超卖,都做了哪些努力?
  • 2025国赛C题保姆级教程思路分析 NIPT 的时点选择与胎儿的异常判定
  • Spring Cloud Alibaba快速入门01
  • C语言结构体:轻松管理球员数据
  • SpringMVC的异常处理和拦截器
  • 【C语言】深入理解指针(4)
  • nextcyber——常见应用攻击
  • 一个老工程师的“新生”:良策金宝AI,让我重新爱上设计
  • [光学原理与应用-389]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 1064nm种子光准直透镜
  • 2025年经管领域专业资格认证发展路径分析
  • 数据结构 之 【模拟实现哈希表】