Java流Stream学习(3)

举报
幼儿园老大* 发表于 2024/09/19 11:20:18 2024/09/19
【摘要】 结束操作迭代 forEach结束操作: forEach 迭代流中的每个数据,即对每个数据进行最后的处理(比如保存到数据库中或打印)。// 输出 10 个随机数 Random random = new Random();random.ints().limit(10).forEach(System.out::println);Copy to clipboardErrorCopied不要用 for...

结束操作

迭代 forEach

结束操作: forEach 迭代流中的每个数据,即对每个数据进行最后的处理(比如保存到数据库中或打印)。

// 输出 10 个随机数 
Random random = new Random();
random.ints().limit(10).forEach(System.out::println);Copy to clipboardErrorCopied

不要用 forEach 方法收集元素!stream 并行执行会损害正确性和效率,使用下方操作。

聚合 Collectors

结束操作:Collectors 类实现了归约操作,例如将流转换成集合和聚合元素,可用于返回列表或字符串。



// Stream 转化为 List
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream()
                               .filter(string -> !string.isEmpty())
                               .collect(Collectors.toList()); 
System.out.println("筛选列表: " + filtered);

// Stream 转化为 String
String mergedString = strings.stream()
                             .filter(string -> !string.isEmpty())
                             .collect(Collectors.joining(", "));
System.out.println("合并字符串: " + mergedString);Copy to clipboardErrorCopied

统计 SummaryStatistics

结束操作:收集最终产生的统计结果,它们主要用于 int、double、long 等基本类型上。



List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);

IntSummaryStatistics stats = numbers.stream()
                                    .mapToInt((x) -> x)
                                    .summaryStatistics();

System.out.println("列表中最大的数 : " + stats.getMax());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。