首页 > 其他分享 >Stream流

Stream流

时间:2024-07-09 23:32:36浏览次数:14  
标签:Collectors statistics Stream stream getScore list collect

filter

filter:过滤,就是过滤器,符合条件的通过,不符合条件的过滤掉;

// 筛选出成绩不为空的学生人数
count = list.stream().filter(p -> null != p.getScore()).count();

map

map:映射,他将原集合映射成为新的集合

// 取出所有学生的成绩List<Double> scoreList = list.stream().map(p -> p.getScore()).collect(Collectors.toList());
// 将学生姓名集合串成字符串,用逗号分隔String nameString = list.stream().map(p -> p.getName()).collect(Collectors.joining(","));

sorted

sorted:排序,可以根据指定的字段进行排序

 
// 按学生成绩逆序排序 正序则不需要加.reversed()

filterList = list.stream().filter(p -> null != p.getScore()).sorted(Comparator.comparing(UserPo::getScore).reversed()).collect(Collectors.toList());

forEach

forEach:这个应该是最常用的,也就是为每一个元素进行自定义操作

除了forEach操作会改变原集合的数据,其他的操作均不会改变原集合,这点务必引起注意

// forEachfilterList.stream().forEach(p -> p.setScore(p.getScore() + 10));

collect

collect:聚合,可以用于GroudBy按指定字段分类,也可以用于返回列表或者拼凑字符串

 
// 按成绩进行归集Map<Double, List<UserPo>> groupByScoreMap = list.stream().filter(p -> null != p.getScore()).collect(Collectors.groupingBy(UserPo::getScore));
for (Map.Entry<Double, List<UserPo>> entry : groupByScoreMap.entrySet()) {  
 System.out.println("成绩:" + entry.getKey() + " 人数:" + entry.getValue().size());
}
// 返回list
List<Double> scoreList = list.stream().map(p -> p.getScore()).collect(Collectors.toList());
// 返回string用逗号分隔
String nameString = list.stream().map(p -> p.getName()).collect(Collectors.joining(","));

statistics

statistics:统计,可以统计中位数,平均值,最大最小值

DoubleSummaryStatistics statistics = filterList.stream().mapToDouble(p -> p.getScore()).summaryStatistics();
System.out.println("列表中最大的数 : " + statistics.getMax());
System.out.println("列表中最小的数 : " + statistics.getMin());
System.out.println("所有数之和 : " + statistics.getSum());
System.out.println("平均数 : " + statistics.getAverage());

parallelStream

parallelStream:并行流,可以利用多线程进行流的操作,提升效率。但是其不具备线程传播性,因此使用时需要充分评估是否需要用并行流操作。

// 并行流

count = list.parallelStream().filter(p -> null != p.getScore()).count();

 
 
 

标签:Collectors,statistics,Stream,stream,getScore,list,collect
From: https://www.cnblogs.com/KL2016/p/18292933

相关文章

  • ESP32S3 N16R8, USB_STREAM UVC调试记录
    win10,vscode,idf-5.2.1,usb_stream开发板:酷世Audio800*480开发板,NT53310+GT911参考phripherals/lcd/i80-controller与usb/host/usb_camera_lcd_display编写程序出现报错:I(11034)USB_STREAM:ENUMStageSTART,SucceedI(11044)USB_STREAM:ENUMStageGET_SHORT_DE......
  • [NodeJS] Streams流式数据处理
    在现代应用开发中,数据处理的效率和资源管理尤为重要。NodeJS作为一种高效的JavaScript运行时环境,通过其强大的流(Stream)功能,提供了处理大规模数据的便捷方式。流式数据处理不仅能够优化内存使用,还可以提高数据处理的实时性和效率。下文将介绍NodeJS中的流概念、流的类型以及如何利......
  • Redis基础教程(十六):Redis Stream
    ......
  • Overview and Stream Cipher
    CryptographyCourseNotesCourseOverviewThegoalofthiscourseistoteachyouhowcryptoprimitivesworkhowtousethemcorrectlyandreasonaboutthesecurityofyourconstructions.Inthiscourse,youwilllearnsomeabstractsofsomecryptography......
  • vCenter登录失败报500错误:no healthy upstream
    过了个周末登录vCenter的时候提示:HTTP状态500-内部服务器错误;重启服务后提示:nohealthyupstream。如下图:看到这个情况,肯定就是部分不服务异常了或者压根就没有启动。至于说因为啥异常还不得而知。想着登录管理服务(访问端口:5480)重启一下异常服务,结果提示证书过期。问题......
  • 掌握Java 8新特性:Lambda表达式与Stream API详解
    ......
  • STREAM流
    StreamStream是一种流式结构.是jdk8的特性。为操作集合提供了很多好用的方法。可读性较低。1获取流的方式publicstaticvoidmain(String[]args){//获取Stream流的方式//方式一://获取集合List<Integer>list=Arrays.asList(1,2,......
  • netdot webapi发布centos stream 9 被dos攻击
    前言-刚刚发布一个demo一直被一个叼毛攻击,不停的扫描端口,弄得接口一访问就是503错误99元买了一个2核2g的服务器,1元钱买了一个服务器,有个人一直扫描我的端口安装一个 nginxdnfinstallnginx安装完成后启动nginx服务#启动systemctlstartnginx#设置开机自启动sys......
  • java中stream流的操作详解
    1.Java8之后引入的Stream流为我们提供了便捷的集合数据处理方式一,常用方法1.filter;过滤集合中符合条件的数据2.distinct();过滤掉集合中重复的元素,过滤的是所有元素都相同的对象3.sorted();对集合中元素进行排序,用来排序的元素类型必须是int才行4.limit(longn);返回前n个......
  • VMware开启CentOS Stream 9操作系统提示 “此主机支持 Intel VT-x,但 Intel VT-x 处于
    解决步骤:1.重启电脑2.华硕主板按(F2或DEL)键进入BIOS3.进入高级->CPU设置4.下拉,InterVirtualizationTechnology开启5.退出->保存改动参考网址:https://blog.csdn.net/web22050702/article/details/138712829......