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

什么是 Stream

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.xdnf.cn/news/35911.html

相关文章:

  • Vue3 + TypeScript中defineEmits 类型定义解析
  • [oeasy]python089_列表_删除列表项_remove_列表长度_len
  • 纯FPGA实现驱动AD9361配置的思路和实现之一 概述
  • 从数据处理方式,系统可扩展性和处理性能三方面比较管道过滤器风格和仓储风格
  • Python Requests 库:从安装到精通
  • Dijkstra 算法
  • 蓝桥杯练习题2
  • 深入理解 Spring 单元测试:@SpringBootTest、@Value 注入、@MockBean 使用实战与陷阱
  • 计算机网络八股——HTTP协议与HTTPS协议
  • Python爬虫-爬取猫眼演出数据
  • DataWhale AI春训营 问题汇总
  • 3. 在 2节的基础上 ,实现launch文件简单编写
  • MySql Innodb存储引擎下sql优化
  • 【leetcode刷题日记】lc.322-零钱兑换
  • 自动驾驶---决策规划之导航增强端到端
  • [CPP6] string模拟实现
  • 【Ubuntu】Ubuntu20.04安装搜狗输入法的详细步骤
  • STL之vector基本操作
  • JVM虚拟机--JVM的组成
  • 自动化测试 VS 测试开发
  • xgboost原理及参数分析
  • 2025年Q1数据安全政策、规范、标准以及报告汇总共92份(附下载)
  • 最新得物小程序sign签名加密,请求参数解密,响应数据解密逆向分析
  • Java读取JSON文件并将其中元素转为JSON对象输出
  • C++ 数学算法全解析(二):解方程与三角函数实用指南
  • 【62期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情API接口之沪深A股派现与募资对比数据及接口API说明文档
  • Linux进程控制
  • 点灯大师(第一步)
  • 【RL系列】ReTool: Reinforcement Learning for Strategic Tool Use in LLMs
  • LeetCode --- 154双周赛