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

[Java 基础] Java Stream

Java Stream 是 Java 8 引入的新特性之一,它提供了一种新的处理数据集合的方式。Stream 可以使我们更加方便地对集合进行处理和操作,同时还能提高代码的简洁性和可读性。


文章目录

    • 什么是 Stream
    • 常见用法
      • 创建 Stream
      • 中间操作
      • 终端操作
    • 总结

什么是 Stream

Stream 是对集合功能的增强,它并不是数据结构,不会保存数据。它可以从集合中获得许多流式处理的优势,如过滤、映射、排序和归约等操作。

常见用法

创建 Stream

Stream 可以通过调用集合对象的 stream() 方法来创建。例如:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = numbers.stream();

中间操作

中间操作是 Stream 的一种特殊操作,它可以对 Stream 进行转换和处理,但并不会立即执行。常见的中间操作有:

  • filter(Predicate<T> predicate): 过滤掉不满足条件的元素。
  • map(Function<T, R> mapper): 将元素通过给定的函数进行转换。
  • sorted(Comparator<T> comparator): 对元素进行排序。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = numbers.stream().filter(n -> n % 2 == 0).map(n -> n * n).sorted();

终端操作

终端操作是 Stream 的最后一步操作,它会触发 Stream 的执行。常见的终端操作有:

  • forEach(Consumer<T> action): 对每个元素执行给定的操作。
  • collect(Collector<T, A, R> collector): 将 Stream 中的元素转换为一个结果集合。
  • count(): 返回 Stream 中的元素个数。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(System.out::println);
int sum = numbers.stream().filter(n -> n % 2 == 0).mapToInt(Integer::intValue).sum();

总结

Java Stream 是一种简化集合处理的方式,它提供了丰富的操作方法来处理集合中的元素。通过中间操作和终端操作的组合,我们可以轻松地实现各种集合处理需求。Stream 的引入大大简化了代码的编写过程,提高了代码的可读性和可维护性。

http://www.lryc.cn/news/264101.html

相关文章:

  • 达芬奇18.6DaVinci ResolveStudio(Win/Mac)激活版
  • 力扣题目学习笔记(OC + Swift)16. 最接近的三数之和
  • 基于STM32的DHT11温湿度传感器与LCD显示器的集成设计
  • 解决浏览器自动将http跳转至https导致无法访问的问题
  • 小程序面试题 | 07.精选小程序面试题
  • 深度学习的推理部分
  • 如何用 CleanMyMac 来保护 Mac 隐私
  • opencv入门到精通——鼠标事件和Trackbar控件的使用
  • iOS 收集 SDK 内部 log
  • 【CSS @property】CSS自定义属性说明与demo
  • 【华为数据之道学习笔记】6-3数据服务分类与建设规范
  • Vue的脚手架
  • Java实现Word中插入上标和下标
  • Java和Python中的目标堆栈规划实现
  • (前端)后管系统登录后隐藏url上信息同时获取url上携带参数~开发需求(bug)总结7
  • CSS3新增样式
  • HP服务器idrac设置以及系统安装
  • rpc和消息队列区别
  • Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
  • 虚幻学习笔记18—C++委托(多播)和事件
  • 【UML】第9篇 类图
  • I.MX6ULL启动详解:Boot配置、Bootable image启动头的组成
  • 隐藏通信隧道技术——防御SSH隧道攻击的思路
  • UE-近战战斗系统学习笔记一
  • 使用 Layui 的 template 模块来动态加载select选项
  • 《数据分析-JiMuReport》积木报表详细入门教程
  • React面试题:React.Component和React.PureComponent的区别?
  • 力扣:203. 移除链表元素(Python3)
  • 微信小程序-选择和分割打开地图选择位置的信息
  • Flink Table API 与 SQL 编程整理