当前位置: 首页 > 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]

相关文章:

  • 代码随想录背包问题完结
  • Linux | 软件仓库管理
  • Python爬虫实战:获取网易新闻数据
  • Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构
  • CCLinkIE转EtherCAT边缘计算网关构建智能产线:跨协议设备动态组网与数据优化传输
  • 微前端框架Module Federation
  • 专题十六:虚拟路由冗余协议——VRRP
  • Linux教程-常用命令系列二
  • dns作业
  • 健康养生之道
  • Javaweb之javascript的详细解析
  • 大模型时代:机遇与风险并存的AI革命
  • 苍穹外卖项目中所涉及到的测试内容
  • 直线轴承常规分类知多少?
  • 破解保险箱
  • 数据结构学习笔记 :排序算法详解与C语言实现
  • 齐次坐标变换+Unity矩阵变换
  • 树莓派超全系列教程文档--(34)树莓派配置GPIO
  • springboot定义统一的响应数据格式
  • 【技术派后端篇】技术派中的白名单机制:基于Redis的Set实现
  • 三一重工去年净利增逾三成至59.75亿,拟分红超30亿元
  • “隐身”数年后重回公众视野的外滩美术馆
  • 非法收受财物2.29亿余元,窦万贵受贿案一审开庭
  • 杭州一地铁口建筑被吐槽像棺材,官方回应:暂无拆除计划
  • 日本多地发生无差别杀人事件,中使馆提醒中国公民加强安全防范
  • 观察|药企竞逐千亿抗癌药赛道,AI有多大助力?