ホームページ >Java >&#&チュートリアル >「groupBy()」を使用して Java ストリーム内の要素の出現をカウントするにはどうすればよいですか?

「groupBy()」を使用して Java ストリーム内の要素の出現をカウントするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-03 10:05:17566ブラウズ

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

Java Streams で GroupBy を使用した発生数のカウント

Java Stream API は、データを効率的に操作および集計するための強力なメカニズムを提供します。一般的なタスクの 1 つは、ストリーム内の要素の出現をカウントすることです。 groupBy() メソッドでこれを実現するには、追加のコレクターを利用する必要があります。

次のコード スニペットを考えてみましょう。これは、ストリーム内の要素をマップに収集することを目的としています。ここで、キーは一意の要素を表し、値はそれらの出現を表します。

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

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

これを実現するには、groupBy() メソッドと Collectors.counting() コレクターを使用して、 counting:

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()): 要素を ID に基づいてグループ化し、各一意の要素をキーとして効果的に扱います。
  • Collectors.counting(): それぞれの出現数を計算します。

結果として得られるカウントされたマップには、要素としてキーが含まれ、それぞれのカウントとして値が含まれます。

{Hello=2, World=1}

あるいは、特定のシナリオでの効率を考慮して、コレクターを使用して探索することもできます。 .groupingByConcurrent。特定のユースケースが同時グループ化の安全要件と一致しているかどうかを必ず評価してください。

以上が「groupBy()」を使用して Java ストリーム内の要素の出現をカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。