• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗的软件工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Stream流的中间方法和终结方法有哪些

在Java 8及更高版本的Stream API中,Stream操作可以分为中间操作(Intermediate Operations)和终结操作(Terminal Operations)。下面是两类方法的一些常见示例:

中间操作(Intermediate Operations):
中间操作不会立即执行任何处理,而是返回一个新的Stream。这些操作可以链接起来形成一个流水线,只有当终端操作被执行时,流中的元素才会按照指定的方式进行处理。

  • filter(Predicate<? super T> predicate):过滤出满足条件的元素。
  • map(Function<? super T, ? extends R> mapper):将每个元素应用给定函数映射为新值。
  • flatMap(Function<? super T, ? extends Stream<? extends R>> mapper):对每个元素应用函数生成新的Stream,并将其扁平化到单个Stream中。
  • sorted() 或 sorted(Comparator<? super T> comparator):对Stream中的元素进行排序。
  • distinct():去除重复元素,使得输出的Stream中没有重复的元素。
  • limit(long maxSize):限制Stream最多包含多少个元素。
  • skip(long n):跳过前n个元素,返回剩余元素的Stream。

终结操作(Terminal Operations):
终结操作会导致Stream的计算发生,一旦执行了终结操作,Stream就不能再被使用。终结操作会消费Stream并产生最终结果或副作用。

  • forEach(Consumer<? super T> action):对Stream中的每个元素执行提供的操作。
  • collect(Collector<? super T, A, R> collector):将Stream元素收集到特定的结果容器中,通常用于转换成集合、列表、数组等。
  • toArray():将Stream转换为数组。
  • reduce(BinaryOperator<T> accumulator):通过二元运算符从Stream中累积元素生成单一结果。
  • min(Comparator<? super T> comparator) 和 max(Comparator<? super T> comparator):找到Stream中的最小或最大元素。
  • count():返回Stream中元素的数量。
  • anyMatch(Predicate<? super T> predicate)、allMatch(Predicate<? super T> predicate)、noneMatch(Predicate<? super T> predicate):检查Stream是否至少有一个元素匹配给定条件、所有元素都匹配条件或没有任何元素匹配条件。

这些是Stream API中最为常用的中间和终结操作,实际上API中还有更多其他的方法可以根据需要选择使用。****

posted on 2024-02-03 13:38  周政然  阅读(303)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3