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可以适用的场景与能力远不止这些。

相关文章
|
存储 Cloud Native API
oss云网关配置
配置阿里云OSS与云网关实现灵活数据传输和访问控制。步骤包括开通OSS服务,创建Bucket,获取访问凭证,可选配置CORS和生命周期规则。云网关配置涉及阿里云云原生网关的代理规则设定或使用云存储网关集成OSS访问,具体配置需参照产品文档,因产品更新可能会有变动。
396 1
|
8月前
|
人工智能 算法 调度
DeepSeek杀疯了!国产AI大模型如何重构未来技术版图?
【爆款导读】当ChatGPT还在为每月10亿访问量沾沾自喜时,中国AI军团已悄然完成弯道超车。2025年开年,DeepSeek以雷霆之势横扫中美应用商店双榜,上线72小时突破千万DAU,开发者生态激增300%。通过优化算法降低成本、多模态能力提升效率,DeepSeek不仅在用户数量上取得突破,更在实际应用场景中展现强大实力。其开源策略推动技术民主化,助力更多开发者参与AI开发,成为AI军备竞赛中的佼佼者。
418 20
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的社区垃圾分类管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的社区垃圾分类管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
202 1
GIGE 协议摘录 —— 引导寄存器(四)(下)
GIGE 协议摘录 —— 引导寄存器(四)
237 1
|
自然语言处理 监控 BI
ERP系统中的多语言与多币种支持
【7月更文挑战第25天】 ERP系统中的多语言与多币种支持
719 3
|
算法 Java 计算机视觉
【Qt&OpenCV 直方图均衡 CLAHE】
【Qt&OpenCV 直方图均衡 CLAHE】
194 0
|
数据采集 JSON 大数据
Python爬虫-付费代理推荐和使用
付费代理推荐,讯代理,阿布云代理使用
505 0
|
存储 安全 Java
Java泛型:深度解析编译时类型安全的核心机制
【6月更文挑战第28天】Java泛型自JDK 1.5起增强了代码安全与复用。它们允许类、接口和方法使用类型参数,如`&lt;T&gt;`在`Box&lt;T&gt;`中。泛型确保编译时类型安全,例如`List&lt;String&gt;`防止了运行时ClassCastException。尽管运行时存在类型擦除,编译时检查仍保障安全。理解泛型核心机制对于优化Java编程至关重要。
182 0
|
自然语言处理 搜索推荐
机器翻译有哪些应用场景
机器翻译有哪些应用场景
|
NoSQL C++
利用ffmpeg源码安装+vscode开发环境搭建详解
利用ffmpeg源码安装+vscode开发环境搭建详解
662 0