stream流操作

简介: stream流操作

背景

   日常开发中一些好的代码设计是完全可以复用,他能简单枯燥的增删改查变得有趣。同时与他人交流及学习优秀的代码设计,并在日常工作中实践或者优化重构自己的代码,是提升自己编码能力重要途径之一,本次交流旨在讲解一些优秀的代码设计并做交流。

stream流操作

  在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的 方式进行逐个处理,或者使用Stream的方式进行处理。

例如,现在有这么一个需求:

     从给定句子中返回单词长度大于5的单词列表,按长度倒序输出,最多返回3个

在JAVA7及之前的代码中,我们会可以照如下的方式进行实现:

publicList<String>sortGetTop3LongWords(@NotNullStringsentence) {
// 先切割句子,获取具体的单词信息String[] words=sentence.split(" ");
List<String>wordList=newArrayList<>();
// 循环判断单词的长度,先过滤出符合长度要求的单词for (Stringword : words) {
if (word.length() >5) {
wordList.add(word);
    }
    }
// 对符合条件的列表按照长度进行排序wordList.sort((o1, o2) ->o2.length() -o1.length());
// 判断list结果长度,如果大于3则截取前三个数据的子list返回if (wordList.size() >3) {
wordList=wordList.subList(0, 3);
    }
returnwordList;
}

在JAVA8及之后的版本中,借助Stream流,我们可以更加优雅的写出如下代码:

publicList<String>sortGetTop3LongWordsByStream(@NotNullStringsentence)
{
returnArrays.stream(sentence.split(" "))
        .filter(word->word.length() >5)
        .sorted((o1, o2) ->o2.length() -o1.length())
        .limit(3)
        .collect(Collectors.toList());
}

直观感受上, Stream 的实现方式代码更加简洁、一气呵成。很多的同学在代码中也经常使用 Stream流,但是对Stream流的认知往往也是仅限于会一些简单的 filter 、 map 、 collect 等 操作,但JAVA的Stream可以适用的场景与能力远不止这些。

相关文章
|
5月前
|
缓存 安全 测试技术
RAID10和RAID5性能对比测试
本文通过实测对比4盘RAID5与RAID10在无缓存(Write Through)下的IO性能:RAID10直接写入达38.7MB/s,远超RAID5的7.4MB/s;启用缓存后RAID5读性能显著提升(128→357MB/s),但写性能仍极低。结论:无BBU保护时,RAID10更安全高效。(239字)
621 2
|
8月前
|
机器学习/深度学习 数据采集 人工智能
构建AI智能体:七十二、交叉验证:从模型评估的基石到大模型时代的演进
交叉验证是机器学习中评估模型性能的核心方法,通过轮换数据划分实现稳健评估。文章系统解析了k折交叉验证的原理与实现,展示其在模型比较和超参数优化中的关键作用。随着大模型时代的到来,传统交叉验证面临计算成本挑战,但核心思想仍应用于下游任务。文章通过可视化案例完整呈现了从数据准备到最终评估的工作流程,强调交叉验证在有限数据场景下的不可替代性,同时指出需要根据任务规模灵活选择评估策略。理解交叉验证的原理与应用是AI从业者的必备能力。
816 16
|
负载均衡 监控 关系型数据库
MySQL 官宣:支持读写分离了!!
【10月更文挑战第8天】MySQL的读写分离功能显著提升了数据库性能、可用性和可靠性。通过将读写操作分配至不同服务器,有效减轻单个服务器负载,提高响应速度与吞吐量,并增强系统稳定性。此外,它还支持便捷的扩展方式,可通过增加只读服务器提升读操作性能。实现读写分离的方法包括软件层面(如使用数据库中间件)和硬件层面(使用独立服务器)。使用时需注意数据一致性、负载均衡及监控管理等问题。
714 0
|
Linux 网络安全
在Linux中,iptables和firewalld两种防火墙如何使用?
在Linux中,iptables和firewalld两种防火墙如何使用?
|
机器学习/深度学习 人工智能 Kubernetes
容器化AI模型部署实战:从训练到推理
在上一篇中,我们探讨了AI技术如何赋能容器化生态。本篇聚焦于AI模型的容器化部署,通过图像分类任务实例,详细介绍了从模型训练到推理服务的完整流程。使用PyTorch训练CNN模型,Docker打包镜像,并借助Kubernetes进行编排和部署,最终通过FastAPI提供推理服务。容器化技术极大提升了AI模型部署的便利性和管理效率,未来将成为主流趋势。
|
Shell 开发工具 git
把git-bash添加到右键菜单中
记得第一次安装git的时候,就是因为Git安装的时候会默认一次性Git Bash Here,Git GUI Here等三个会一起出现,而本人由于洁癖就卸载了重新安装了一次拒绝添加右键菜单的行为。 然而再开发途中,回到桌面点exe再cd命令到该文件夹,着实麻烦,于是懒癌战胜洁癖,开始着手了。
551 0
|
Java
java、javaWeb实验报告!!!
java、javaWeb实验报告!!!
584 0
java、javaWeb实验报告!!!
|
JSON 关系型数据库 MySQL
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
982 1
|
算法 计算机视觉
傅里叶变换
傅里叶变换
1181 2