
Java流及流操作示例
过滤操作:
发布日期:2021-05-19 16:45:05
浏览次数:21
分类:精选文章
本文共 1448 字,大约阅读时间需要 4 分钟。
Java中的Stream API是一种基于集合操作的框架,简化了数据处理流程。它与传统的输入输出流不同,Stream不实际存储数据,而是当需要时,按需提供数据源。其操作分为中间操作和终端操作,中间操作返回Stream对象,终端操作处理数据并返回结果。
Stream的特性
- 不存储数据:Stream不保存数据,所有操作从数据源获取。
- 懒评估:源数据在需要时才会读取,只有最终操作开始时才会处理。
- 并行性:支持并行处理,提高性能。
- 无状态性:不受之前操作影响,所以可以重用流操作多次。
常见操作示例
@Testpublic void stream() { // 统计红色小组件个数 System.out.println(widgetList.stream().filter(w -> w.getColor().equals("RED")).count()); // 统计红色小组件总重 System.out.println(widgetList.stream().filter(w -> w.getColor().equals("RED")).mapToInt(Widget::getWeight).sum());}
- 映射操作:
- 收集操作:
- 排序操作:
- 并行处理:通过
parallel()
方法设置流并行性。 - 时间控制:使用
timeout()
方法设置操作超时限制。 - 匹配操作:使用
anyMatch()
、allMatch()
和noneMatch()
方法进行流匹配。 - 限制和跳过:使用
limit(n)
和skip(n)
方法限制或跳过元素数量。
@Testpublic void map() { // 映射并转换字符串 Arrays.stream("Hello, world!").map(String::toLowerCase).peek(word -> System.out.println("Mapped value: " + word)).count();}
@Testpublic void collect() { // 故障恢复统计 final HashSetwidgetSet = widgetList.stream().collect(Collectors.UsingConsumer(ArrayList::new)); System.out.println("Total widgets: " + widgetSet.size());}
@Testpublic void stream() { // 排序数组 Integer[] integers = {1, 9, 3, 4, 5, 6, 7, 8, 2, 5}; // invokedsexy ListintegersList = Arrays.asList(integers); integersList.stream().sorted().forEach(System.out::println);}
高级操作
总结
Stream API大大简化了数据处理代码,提高了代码的可读性和可维护性。通过灵活的组合中间和终端操作,可以高效处理各种数据聚合任务。不过,需要结合实际场景选择最优操作序列,以发挥Stream的优势。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月05日 13时05分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java后台处理ajax跨域请求处理
2023-01-28
Java后台测试技巧
2023-01-28
java后台生成截图-(DJNativeSwing版本)
2023-01-28
java后台通过http请求下载文件
2023-01-28
Java后端使用socketio,实现小程序答题pk功能
2023-01-28
Java后端开发书架
2023-01-28
Java后端开发:推荐常用的13款开发工具(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-28
JAVA后端知识点长啥样?
2023-01-28
Java后端:html转pdf实战笔记
2023-01-28
Java和JavaScript区别与联系
2023-01-28
java商品报价管理
2023-01-28
Java基础学习总结(45)——JAVA单元测试工具比较
2023-01-28
Java基础学习总结(47)——JAVA输入输出流再回忆
2023-01-28
Java基础学习总结(48)——Java 文档注释
2023-01-28
Java基础学习总结(4)——对象转型
2023-01-28
Java基础学习总结(4)——对象转型
2023-01-28
Java基础学习总结(51)——JAVA分层理解
2023-01-28
Java基础学习总结(52)——Liunx系统Centos上搭建Java开发环境
2023-01-28
Java基础学习总结(53)——HTTPS 理论详解与实践
2023-01-28