千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > StreamReduce用法详解

StreamReduce用法详解

来源:千锋教育
发布人:xqq
时间: 2023-11-24 23:56:10 1700841370

一、Stream用法

Stream是Java 8新加入的一个概念,它提供了一种处理集合元素的方式,可以支持类似于SQL语句一样对集合进行查询和处理操作,特别是对于大数据量操作,可以大幅度提高程序的性能效率。

使用Stream需要先建立一个集合,然后使用stream()方法将其转化成Stream对象,再利用Stream提供的方法进行操作。


List list = Arrays.asList(1,2,3,4,5); //建立一个集合
Stream stream = list.stream(); //将集合转化为Stream对象

二、StreamReduce函数

StreamReduce函数是Stream中常用的一个方法之一,它的作用是将Stream的元素按照指定的方式进行合并,最终返回一个合并后的结果。

reduce方法有两个参数,第一个是初始值,第二个是合并的方式。初始值可以是一个默认值,也可以是集合中的一个元素。合并方式只要满足结合律即可。常见的合并方式包括求和、求积、字符串连接等等。


List list = Arrays.asList(1,2,3,4,5);
int sum = list.stream().reduce(0,(x,y)->x+y); //求和
int product = list.stream().reduce(1,(x,y)->x*y); //求积
String str = list.stream().map(String::valueOf).reduce("",(x,y)->x+y); //字符串连接

三、StreamWriter用法

StreamWriter是一个Java 8新增的功能,它可以将Stream中的元素按照指定的方式输出到文件或者控制台上,可以方便地进行日志记录等操作。

StreamWriter的使用步骤分为三部分:建立输出流、将流转化为StreamWriter对象、将StreamWriter对象写入到文件或控制台上。


//将Stream对象写入到文件中
List list = Arrays.asList(1,2,3,4,5);
Stream stream = list.stream();
PrintWriter pw = new PrintWriter(new FileWriter("output.txt"));
stream.forEach(pw::println);
pw.close();

//将Stream对象输出到控制台
List list = Arrays.asList(1,2,3,4,5);
Stream stream = list.stream();
stream.forEach(System.out::println);

四、Stream流Reduce方法

Stream流Reduce方法是Stream中的一个常用操作方法,它可以将集合中的元素按照指定的方式合并,并返回一个Optional对象,用于表示合并后的结果。

reduce方法有三个参数:第一个是合并的方式,第二个是初始值,第三个是合并结果的条件。当条件满足时,合并结果可以被返回。


List list = Arrays.asList(1,2,3,4,5);
Optional max = list.stream().reduce((x,y)->x>y?x:y); //求最大值
Optional min = list.stream().reduce((x,y)->x result = list.stream().reduce((x,y)->x+y); //求和

五、Reduce的用法

Reduce方法在Stream的操作中扮演了重要的角色,它不仅仅可以用于集合合并,还可以用于数据统计、筛选等操作。

常见的Reduce用法包括:统计集合元素个数、查找满足条件的元素、返回元素数组等。


List list = Arrays.asList(1,2,3,4,5);
long count = list.stream().count(); //元素个数
Optional find = list.stream().filter(x->x>3).findFirst(); //查找第一个大于3的元素
Object[] array = list.stream().toArray(); //将元素转化为数组

六、Stream常用方法

除了StreamReduce和Reduce方法外,Stream还提供了很多其他的处理方法,用于方便地对集合进行各种操作。

常见的Stream方法包括:filter(过滤)、map(映射)、distinct(去重)、sorted(排序)等。


List list = Arrays.asList(1,2,3,4,5);
Stream filter = list.stream().filter(x->x>3); //过滤出大于3的元素
Stream map = list.stream().map(x->x*x); //将元素平方
Stream distinct = list.stream().distinct(); //去重
Stream sorted = list.stream().sorted(); //排序

七、Stream流的方法

Stream流提供了各种操作方法,可以满足不同的操作需求。除了常用的Reduce和Reduce方法外,还有其他各种方法可以方便地对集合进行处理。

常见的Stream方法包括:flatMap(扁平映射)、peek(查看操作)、skip(跳过元素)、limit(限制元素个数)等。


List> list = Arrays.asList(Arrays.asList(1,2),Arrays.asList(3,4),Arrays.asList(5,6));
Stream flatMap = list.stream().flatMap(Collection::stream); //扁平化集合
Stream peek = list.stream().peek(System.out::println); //查看元素
Stream skip = list.stream().skip(2); //跳过前两个元素
Stream limit = list.stream().limit(3); //限制只输出前三个元素

八、Stream类的常用方法

Stream类是Java 8中常用的一个类,在Stream操作中发挥着重要的作用。Stream类提供了很多静态方法和实例方法,用于方便地对集合进行各种操作。

常见的Stream类方法包括:of(创建Stream对象)、generate(生成Stream对象)、concat(合并Stream对象)、iterate(迭代器操作)等。


Stream stream1 = Stream.of(1,2,3); //创建Stream对象
Stream stream2 = Stream.generate(()->(int)(Math.random()*10)); //生成Stream对象
Stream stream3 = Stream.concat(stream1, stream2); //合并两个Stream对象
Stream stream4 = Stream.iterate(1, x->x+1).limit(10); //生成从1到10的整数序列

九、Stream流的所有方法

Stream类提供了很多方法,用于对集合进行各种操作。这些方法可以互相组合,以实现不同的操作需求。

以下是Stream类的所有方法:


close()
collect()
count()
distinct()
filter()
findAny()
findFirst()
flatMap()
forEach()
forEachOrdered()
isParallel()
iterator()
limit()
map()
mapToDouble()
mapToInt()
mapToLong()
max()
min()
noneMatch()
parallel()
peek()
reduce()
sequential()
skip()
sorted()
spliterator()
toArray()

十、Stream.filter用法

Stream.filter方法是Stream类中的一个常用操作方法。它可以对集合中的元素进行条件过滤,只保留满足条件的元素。

常见的Filter用法包括:保留指定条件的元素、过滤重复元素等。


List list = Arrays.asList(1,2,3,4,5,1,2);
Stream filter = list.stream().filter(x->x>3); //保留大于3的元素
Stream distinct = list.stream().distinct(); //去除重复元素

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT