news 2026/6/4 11:02:08

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/5/31 10:49:41

霍尔电流传感器在新能源汽车中的应用探讨

最近在研究新能源汽车电驱动系统的电流监测方案&#xff0c;发现霍尔电流传感器在电机控制、逆变器和BMS中扮演着关键角色。尤其是在高压、大电流场景下&#xff0c;非接触式测量的优势特别明显。不过&#xff0c;实际应用中也发现了一些技术细节和挑战&#xff0c;今天就聊聊霍…

作者头像 李华
网站建设 2026/5/27 16:05:20

渗透测试实战核心:ARP 欺骗攻击(ARP 断网攻击)全流程实操指南

一、目的&#xff1a;通过实训理解ARP欺骗的原理。掌握中间攻击的方法。 二、场景描述&#xff1a; 在虚拟机环境下配置 “Win7”和“Kali Linux”虚拟系统&#xff0c;使得2个系统之间能够相互通信。 三、实验环境&#xff1a; 1.软件&#xff1a;VMware Workstations14以…

作者头像 李华
网站建设 2026/6/3 2:20:38

基于区块链的传感器数据存证与溯源系统

基于区块链的传感器数据存证与溯源系统:用“不可篡改的指纹”守护数字世界的真实 一、引入:一盒冰淇淋的信任危机 夏天的午后,小明抱着刚从超市买的进口香草冰淇淋往家跑——包装盒上明明白白写着“全程冷链≤-18℃”。可打开时,冰淇淋已经化成了黏糊糊的液体。 他拿着购…

作者头像 李华
网站建设 2026/5/29 1:09:47

代码动态生成技术

1、非修改序列算法这些算法不会改变它们所操作的容器中的元素。1.1 find 和 find_iffind(begin, end, value)&#xff1a;查找第一个等于 value 的元素&#xff0c;返回迭代器&#xff08;未找到返回 end&#xff09;。find_if(begin, end, predicate)&#xff1a;查找第一个满…

作者头像 李华
网站建设 2026/5/29 0:05:17

第一批笃信AI的人,也被解雇了

最近有这么个新闻&#xff0c;还怪幽默的。1月25日消息&#xff0c;俄甲知名俱乐部索契透露了前教练罗伯特莫雷诺被解雇的原因&#xff1a;他让AI替他工作。这位前西班牙国家队教练&#xff0c;大概是网上大家羡慕的那种最先拥抱AI的人。作为ChatGPT的忠实粉丝&#xff0c;他让…

作者头像 李华
网站建设 2026/6/2 21:04:03

在腾讯偶遇姚顺雨,这一次他是来发科研奖金的…

闻乐 发自 凹非寺量子位 | 公众号 QbitAI来围观腾讯青云奖学金颁奖&#xff0c;竟然偶遇了姚顺雨。这位27岁的腾讯首席AI科学家&#xff0c;在腾讯大楼的线下公开亮相&#xff0c;不是发布重磅产品&#xff0c;也不是解读战略布局——而是给一群青年研究者颁发青云奖学金&#…

作者头像 李华