首页 > 其他分享 >Stream流的中间方法和终结方法有哪些

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

时间:2024-02-03 13:45:07浏览次数:24  
标签:Predicate Stream 终结 元素 predicate 操作 方法

在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中还有更多其他的方法可以根据需要选择使用。****

标签:Predicate,Stream,终结,元素,predicate,操作,方法
From: https://www.cnblogs.com/itcq1024/p/18004589

相关文章

  • net 下载文件的几种方法
    1、TransmitFile实现下载protectedvoidDownLoad_Click(objectsender,EventArgse){/*微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。......
  • # yyds干货盘点 # 盘点一个txt文档合并的实战需求(方法一)
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【FiNε_】问了一个Pandas数据合并的问题。问题如下图所示:二、实现过程这里【隔壁......
  • 盘点一个txt文档合并的实战需求(方法一)
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【FiNε_】问了一个Pandas数据合并的问题。问题如下图所示:二、实现过程这里【隔壁......
  • .NET(C#)自动属性提供默认值的方法
    ​ .NET(C#)中,自动属性(Auto-ImplementedProperties)提供了一种简洁的方式来实现属性而无需显式定义字段。但直到C#6.0版本之前,不能在自动属性的声明中直接为其指定默认值。从C#6.0开始,可以在自动属性声明中直接初始化默认值。参考文档:.Net(C#)自动属性提供默认值的方法-CJavaP......
  • 读论文-基于会话的推荐方法综述
    前言今天读的论文为一篇于2023年3月15日发表于《中文信息学报》的期刊论文,文章属于综述;文章对基于会话的推荐模型进行了详细的分析、分类和对比,阐明了这些方法各自解决的问题与存在的不足。摘要近年来,基于会话的推荐方法受到学术界的广泛关注。随着深度学习技术的不断发展,不同......
  • Laravel中toArray()方法使用驼峰变量
    前言不知道大家在用Laravel开发过程中有没有遇到过模型查询时,with中使用驼峰命名变量名,但是使用toArray方法后,变量名变成了蛇形命名;比如说这样的一条查询语句:WorkflowModel::query()->with(['workflowsInfo'])->get()->toArray();查询出来的结果可能就是这样的:查询出来关联......
  • 项目中如何保证API接口的幂等性?有哪些实现解决方法?有何利弊
    在实际开发项目中保证API接口的幂等性是十分重要的,因为在幂等性可以保证多次相同的操作不会对系统造成多次影响。首先来了解什么是接口API幂等性,简单来说就是对同一个接口的多次请求或操作造成的影响是相同的,就是说一个操作如果在其执行一次或者多次后产生的结果相同,这个操作就是......
  • SOC-200 3 攻击者方法介绍
    致力于将博士后八股文解读成幼儿园一把梭。主题:•TheNetworkasaWhole•TheLockheed-MartinCyberKill-Chain洛克希德-马丁网络杀戮链•MITREATT&CKFrameworkDMZ区域一把梭:充其量就是企业提供对外服务的一个区域(比如web服务)。最low的DMZ部署防御好吧。......
  • uniapp sqlite方法封装
    vardbName='xxx'//数据库名称vardbPath='_doc/xxx.db'//数据库地址,推荐以下划线为开头_doc/xxx.db//判断数据库是否打开constisOpen=(plus:any)=>{//数据库打开了就返回true,否则返回falsevaropen=plus.sqlite.isOpenDatabase({name:......
  • vector<bool>的玄学问题及处理方法
    今天做题的时候搞范围循环,发现不能对vector数组元素引用。报错vector<bool>prev(26,false);for(bool&x:prev)x=true;[错误]非常量引用的初始值必须是左值这很反常识,因为其他元素的vector我都是用这样来操作元素的。同时我想到之前就遇到一个问题,无法直接......