首页 > 其他分享 >写写stream流的终结操作

写写stream流的终结操作

时间:2023-12-25 19:23:26浏览次数:18  
标签:函数 stream int 终结 元素 写写 result 操作

终结操作和中间操作的区别:中间操作返回的一直都是stream,所以可以一直使用,但是终结操作返回的不是stream,后面不能继续操作

 

foreach:对流中的所有元素进行遍历操作

count:获取当前流内元素的个数//这个是无参的

max&min:这个也是需要比较器的,具体写法和sort差不多,但是返回值是Optional

collect(Collectors.toList()):把当前的流转换成集合

  collect(Collectors.toMap(a->a.getKey,a->a.getValue))  //转换成map

查找和匹配:1.anyMatch | allMatch | noneMatch,返回类型是boolean,只要有符合的就会返回true,需要一个判断条件函数做参

      2.findAny | findFirst 无参数传入,获取流中的一个元素,any没法保证获取的一定是流中的第一个元素(有随机性)

reduce归并:对流中的数据按照指定的计算方式计算出结果(缩减操作)

reduce(初始值,(结果,遍历元素)->(对结果与遍历元素进行操作))

两个元素

使用提供的标识值和关联累积函数对此流的元素执行缩减,并返回缩减值。这相当于:
 int result = identity;  for (int element : this stream)      result = accumulator.applyAsInt(result, element)  return result;
但不受顺序执行的约束。
该 identity 值必须是累加器函数的标识。这意味着对于所有人来说 x, accumulator.apply(identity, x) 都是平等 x的。该 accumulator 函数必须是 关联 函数。
这是一个 终端操作。
参数:
identity – 累加函数的恒等值 op– 用于组合两个值的关联、非干扰、无状态函数
返回:
减少的结果

一个元素(通过文档可知,这里就是把要遍历的第一个元素设置为结果)

使用关联累积函数对此流的元素执行缩减,并返回OptionalInt描述缩减值(如果有)。这相当于:
 boolean foundAny = false;
int result = null;
for (int element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.applyAsInt(result, element);
}
return foundAny ? OptionalInt.of(result) : OptionalInt.empty(); 但不受顺序执行的约束。 该 accumulator 函数必须是 关联 函数。 这是一个 终端操作。 参数: op– 用于组合两个值的关联、非干扰、无状态函数 返回: 减少的结果

 

stream总结:

1.惰性求值(如果只有中间操作没有终结操作所有操作都不会进行)

2.流是一次性的(流使用完之后就会报废,不可以重复使用)

3.不会影响原数据(正常情况下stream操作不会对原数据产生修改)

 

写一下学习中遇到的一些有趣的问题

        int[] arr = {1, 2, 3, 4, 5, 6};
        int reduce = Arrays.stream(arr).reduce(0, (int1, int2) -> int1<int2?int1:int2);
        int reduce1 = Arrays.stream(arr).reduce(0, (int1, int2) -> Math.min(int1, int2));
        int reduce2 = Arrays.stream(arr).reduce(0, Math::min)

我根据idea的提示从0->1->2一步一步简写判断语句

Intger类有里就有最值

        int minValue = Integer.MIN_VALUE;
        int maxValue = Integer.MAX_VALUE;

 

标签:函数,stream,int,终结,元素,写写,result,操作
From: https://www.cnblogs.com/kun1790051360/p/17926693.html

相关文章

  • 2023年终结-人生转折的一年
    1.生活2022年11月认识了女朋友,2023年过年后确定了关系。时间越久,俩人越恩爱。这是最重要的一项收获。2.工作今年全面负责了两个项目,对项目的认知更加全面。设计项目用的既时设计网站,也是初步用工具进行UI设计,设计结果还比较满意,get了一项新技能。项目的开发均用springb......
  • java集合stream操作
    forEach-遍历Stream<Integer>stream=Stream.of(2,3,1,4);stream.forEach(System.out::println);filter-过滤Stream<Integer>stream=Stream.of(2,3,1,4);Stream<Integer>newStream=stream.filter(num->num>2);System.out.pr......
  • 一文让你玩转 Java 8 Stream
    Java8中的StreamAPI是一个强大的处理数据的新特性,它提供了一种声明式、高效且易于并行化的数据处理方式。以下是一些Stream的主要特性和常用场景:主要特性:延迟执行(LazyEvaluation):Stream不会立即执行任何操作,而是在需要时才进行计算。这有助于提高性能和资源效率。函数式编......
  • 【poi】使用poi时报错:java.io.EOFException: Unexpected end of ZLIB input stream
    错误写法Workbookworkbook=null;try{//会报错Filefile=newFile("D:\\1.xlsx");workbook=newXSSFWorkbook(file);ByteArrayOutputStreambaos=newByteArrayOutputStream(); workbook.write(baos); workbook.close(); bytes=baos......
  • Java之Stream流及方法引用的详细解析二
    2.6Stream流综合练习【应用】案例需求现在有两个ArrayList集合,分别存储6名男演员名称和6名女演员名称,要求完成如下的操作男演员只要名字为3个字的前三人女演员只要姓林的,并且不要第一个把过滤后的男演员姓名和女演员姓名合并到一起把上一步操作后的元素作为构造方法的参数创建演员......
  • Java之stream流的详细解析一
     2.Stream流2.1体验Stream流【理解】案例需求按照下面的要求完成集合的创建和遍历创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合原始方式示例代码publicclassMyStrea......
  • java Stream
    一、Stream1、概述 2、Stream流使用过程 示例图: 3、 Stream流的常见生成方式 示例:packageitbianma01;importjava.util.*;importjava.util.stream.Stream;publicclassDemo{publicstaticvoidmain(String[]args){//方式一:Collection......
  • Wpf Bitmap(Image)Base64,Url,文件Path,Stream转BitmapSource(ImageSource),无需外部d
    直接上代码usingSystem;usingSystem.Drawing;usingSystem.IO;usingSystem.Windows.Forms;usingSystem.Windows.Media.Imaging;namespaceCommonUtils{///<summary>///Windows图片处理///</summary>publicstaticclassWindowsImage......
  • 测试 doris stream load 数据流
    root@tc-doris-fe-1:~#vimdata.csvroot@tc-doris-fe-1:~#curl--location-trusted-uroot-T./data.csv-H"label:label_example"-H"column_separator:,"-H"columns:id,name"http://10.30.81.5:8030/api/ops_test/test_error_log/......
  • java.io.FileInputStream#read(byte[]) 阻塞导致没办法继续执行的问题处理
    在对设备节点进行操作的时候,发现读的时候进入阻塞状态(可能是设备节点异常),导致没办法继续执行后面的代码 查看了一下,文件的方式读,是没办法配置超时的自动报异常的设计了一段代码,针对读阻塞做异常处理 publicstaticStringsendCmdToFile(StringfromFile,Stringcmd......