news 2026/2/22 13:32:14

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/2/16 4:26:44

MATLAB Simulink教程及模型

MATLAB Simulink教程及模型 包括:MATLAB Simulink仿真及代码生成视频教程&#xff0c;Simulink仿真及代码生成技术电’子’书. MATLAB文章目录 MATLAB Simulink入门教程&#xff1a;从零开始搭建你的第一个仿真模型 本文适合刚接触Simulink的新手用户&#xff0c;通过一个简单示…

作者头像 李华
网站建设 2026/2/16 7:06:50

2026 年学术研究 AI 写论文辅助软件权威排行榜

一、综合排行榜 TOP10&#xff08;按综合评分排序&#xff09; 排名工具名称综合评分核心特性标签适用场景1PaperRed99 分全流程王者、合规标杆、免费 AIGC 不限次检测本科 / 硕士 / 博士全阶段论文、期刊投稿、查重降重全流程2毕业之家 AI94 分中文学术全流程、真实文献引用、…

作者头像 李华
网站建设 2026/2/18 8:51:31

用于结构振动响应压缩的频率增强矢量量化变分自编码器

1. 论文中文标题 用于结构振动响应压缩的频率增强矢量量化变分自编码器 2. 论文主要内容概括 本文针对结构健康监测中振动响应数据量大、传输存储困难的问题,提出了一种频率增强的矢量量化变分自编码器(FEVQVAE)压缩方法。传统自编码器只能将数据压缩为低维浮点特征,限制…

作者头像 李华
网站建设 2026/2/21 5:21:11

高性能压缩库实现

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

作者头像 李华