首页 >Java >java教程 >如何使用'groupBy()”计算 Java 流中元素的出现次数?

如何使用'groupBy()”计算 Java 流中元素的出现次数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-03 10:05:17569浏览

How do I count occurrences of elements in a Java Stream using `groupBy()`?

在 Java Streams 中使用 GroupBy 计算出现次数

Java Stream API 提供了强大的机制来有效地操作和聚合数据。一项常见任务是计算流中元素的出现次数。使用 groupBy() 方法实现此目的需要利用额外的收集器。

考虑以下代码片段,其目的是将流中的元素收集到映射中,其中键代表唯一元素,值代表它们的出现次数:

List<String> list = Arrays.asList("Hello", "Hello", "World");

// Desired output:
// {Hello=2, World=1}

为了实现这一点,我们可以使用带有 Collectors.counting() 收集器的 groupBy() 方法来执行计数:

import java.util.*;
import java.util.stream.*;

class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("Hello");
        list.add("Hello");
        list.add("World");

        Map<String, Long> counted = list.stream()
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        System.out.println(counted);
    }
}

解释:

  • Collectors.groupingBy(Function.identity()):根据元素的身份对元素进行分组,有效地将每个唯一元素视为键。
  • Collectors.counting():计算每个集合出现的次数

生成的计数映射将键作为元素,值作为各自的计数:

{Hello=2, World=1}

或者,出于某些场景下的效率考虑,您可以探索使用收集器.groupingByConcurrent。请记住评估您的特定用例是否符合并发分组的安全要求。

以上是如何使用'groupBy()”计算 Java 流中元素的出现次数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn