news 2026/10/30 19:19:48

312. Java Stream API - 使用收集器进行计数操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
312. Java Stream API - 使用收集器进行计数操作

文章目录

  • 312. `Java Stream API` - 使用收集器进行计数操作
    • ✅ **计数操作**
      • 示例:使用 `count()` 和 `Collectors.counting()` 进行计数
        • 使用 `count()` 方法:
        • 使用 `Collectors.counting()`:
      • 运行结果:
      • **为什么要使用 `Collectors.counting()`?**
        • 组合多个收集器的示例:
      • 运行结果:
    • ✅ **小结**

312.Java Stream API- 使用收集器进行计数操作

在Java Stream API中,Collectors工厂类提供了许多方便的方法,可以用于将流中的元素收集到不同的数据结构中。除了常见的收集器(如toList()、toSet())之外,Collectors还提供了其他功能性的收集器,其中之一是Collectors.counting(),它用于统计流中元素的数量。

Collectors.counting()的作用与调用流的count()方法类似,但使用收集器的方式提供了更灵活的组合能力,尤其在需要与其他收集器一起使用时非常有用。这一点将在下一节关于收集到Map中的内容中详细介绍。

✅计数操作

Collectors.counting()用于统计流中元素的数量。与直接使用stream.count()方法效果相同,但在组合多个收集器时,counting()提供了更好的灵活性。

示例:使用count()和Collectors.counting()进行计数

使用count()方法:
Collection<String>strings=List.of("one","two","three");longcount=strings.stream().count();System.out.println("count = "+count);
使用Collectors.counting():
Collection<String>strings=List.of("one","two","three");longcountWithACollector=strings.stream().collect(Collectors.counting());System.out.println("countWithACollector = "+countWithACollector);

运行结果:

count=3countWithACollector=3

这两个代码片段的功能是一样的,都返回了流中元素的数量。count()方法直接返回结果,而Collectors.counting()是通过收集器的方式来实现的。尽管实现方式不同,但最终的结果相同,都是返回流中元素的数量。

为什么要使用Collectors.counting()?

虽然count()方法本身已经足够简单直接,但在某些情况下,尤其是当你需要组合多个收集器时,Collectors.counting()更加有用。例如,在将流中的元素按照某些条件分组或进行归类时,你可能希望同时获取每组的元素数量。此时,Collectors.counting()与其他收集器(如groupingBy())结合使用可以提供非常强大的功能。

组合多个收集器的示例:

假设你想要统计每个单词在列表中出现的次数,并按字母分组:

Map<Character,Long>wordCountByFirstLetter=strings.stream().collect(Collectors.groupingBy(s->s.charAt(0),Collectors.counting()));System.out.println("wordCountByFirstLetter = "+wordCountByFirstLetter);

运行结果:

wordCountByFirstLetter={o=1,t=2}

在这个示例中,我们首先按单词的首字母进行分组,然后使用Collectors.counting()来统计每个字母对应的单词数量。通过组合收集器,我们可以实现复杂的统计需求。

✅小结

  1. Collectors.counting()与count()方法:这两者都可以用来计算流中的元素数量,效果相同,但Collectors.counting()在与其他收集器组合使用时更加灵活。
  2. 组合收集器的应用:当需要将流中的元素按照某些规则进行分组或归类时,Collectors.counting()是一个非常有用的工具。
  3. 灵活性:通过Collectors.counting(),你可以在复杂的收集操作中轻松地获取元素数量,而不仅仅是简单的计数操作。

Collectors.counting()是一个非常有用的收集器,尤其在你需要处理多个收集器并进行组合操作时,它能够与其他收集器协同工作,提供更强大的功能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 4:08:44

【收藏必备】大模型知识蒸馏:让AI智慧平民化的核心技术

——从庞然大物到精悍干将的AI修炼之路 在武侠小说里&#xff0c;总有这样一个桥段&#xff1a;闭关修炼几十年的宗师&#xff0c;把毕生功力传授给爱徒。徒弟虽然身体没那么强壮&#xff0c;但能用最简洁的招式打出接近宗师的威力。 在AI世界里&#xff0c;这种“师徒传功”…

作者头像 李华
网站建设 2026/10/23 0:04:00

收藏!一文读懂大语言模型核心:Token、自回归与位置编码

要理解大语言模型(LLM)&#xff0c;首先要理解它的本质&#xff0c;无论预训练、微调还是在推理阶段&#xff0c;核心都是next token prediction&#xff0c;也就是以自回归的方式从左到右逐步生成文本。 什么是 token token是指文本中的一个词或者子词&#xff0c;给定一句文…

作者头像 李华
网站建设 2026/10/30 2:38:07

利用多种方法实现SQL行列转换

一、 背景 SQL用于统计数据分析过程中&#xff0c;行列转换是一项常见的操作。按转化方向划分&#xff0c;行列转换可分为&#xff1a;行转列、列转行&#xff1b;按转化内容划分可分为&#xff1a;行列转字符串、字符串转行列等。 受SQL语句语法限制&#xff0c;传统的数据库…

作者头像 李华
网站建设 2026/10/30 22:16:22

10岁小学生自制28元望远镜观察月球

一块旧纸壳、一根木棍和几个网购的镜片&#xff0c;在10岁小学生手中变成了探秘宇宙的窗口。 “我断断续续做了几天&#xff0c;总共花费28元。”近日&#xff0c;广东揭阳一位10岁三年级小学生庄铭杨自制天文望远镜成功观察到月球陨石坑的视频在网络爆火。 这名来自揭西县上砂…

作者头像 李华