ホームページ  >  記事  >  Java  >  Java 8 のストリーム API: コレクションのグループ化と統計のために Collectors クラスを使用する方法

Java 8 のストリーム API: コレクションのグループ化と統計のために Collectors クラスを使用する方法

王林
王林オリジナル
2023-07-31 18:21:151103ブラウズ

Java 8 の Stream API: コレクションのグループ化と統計に Collectors クラスを使用する方法

はじめに:
Java 8 では、関数型プログラミングの概念である Stream API が導入されています。これにより、収集データをより簡潔かつエレガントな方法で処理できるようになります。 Stream API は豊富な機能を提供します。その 1 つは、コレクションのグループ化とカウントです。この記事では、Collector クラスを使用してこの機能を実現する方法を紹介します。

  1. コレクションのグループ
    実際の開発では、後続の処理を容易にするために、特定の属性に従ってコレクションをグループ化する必要があることがよくあります。 Java 8 では、Collectors クラスの groupBy() メソッドを使用して、コレクションのグループ化を実装できます。

サンプル コードは次のとおりです:

class Person {
    private String name;
    private String gender;
    private int age;

    public Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public int getAge() {
        return age;
    }
}

List<Person> persons = Arrays.asList(
        new Person("John", "male", 20),
        new Person("Jane", "female", 25),
        new Person("Tom", "male", 30),
        new Person("Emily", "female", 35)
);

Map<String, List<Person>> groupedByGender = persons.stream()
        .collect(Collectors.groupingBy(Person::getGender));

System.out.println(groupedByGender);

出力結果は次のとおりです:

{female=[Person{name='Jane', gender='female', age=25}, Person{name='Emily', gender='female', age=35}], male=[Person{name='John', gender='male', age=20}, Person{name='Tom', gender='male', age=30}]}

上記のコードでは、まず例として Person クラスを作成しました。これには、名前、性別、年齢の属性が含まれます。次に、人物オブジェクトの List コレクションが作成されます。次に、stream() メソッドを使用してコレクションをストリームに変換します。最後に、Collectors クラスの groupBy() メソッドを使用して、Person オブジェクトの性別属性に従ってグループ化します。結果は Map コレクションに保存されます。

  1. コレクションの統計
    実際には、要素数の計算、合計、平均化など、コレクション内の要素をカウントする必要がある場合があります。 Java 8 の Stream API には一連の統計メソッドが用意されており、summingInt()、averagingInt()、counting()、および Collectors クラスのその他のメソッドを使用して実装できます。

サンプル コードは次のとおりです:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

int sum = numbers.stream().collect(Collectors.summingInt(Integer::intValue));
double average = numbers.stream().collect(Collectors.averagingInt(Integer::intValue));
long count = numbers.stream().collect(Collectors.counting());

System.out.println("Sum: " + sum);
System.out.println("Average: " + average);
System.out.println("Count: " + count);

出力結果は次のとおりです:

Sum: 15
Average: 3.0
Count: 5

上記のコードでは、最初に整数型のリストを作成します。一連の数字が含まれています。次に、summingInt() メソッドを使用して合計を計算し、averagingInt() メソッドを使用して平均を計算し、counting() メソッドを使用して数値を計算します。最後に、Collectors クラスのcollect() メソッドを通じて結果が取得されます。

概要:
Java 8 の Stream API と Collectors クラスを使用すると、より簡潔かつエレガントな方法でコレクションをグループ化し、統計操作を実行できます。この機能により、コードの可読性が向上するだけでなく、プログラムの柔軟性も大幅に向上します。

上記は、Java 8 の Stream API および Collectors クラスのコレクションのグループ化と統計についてのこの記事の紹介です。お役に立てば幸いです。ありがとう!

以上がJava 8 のストリーム API: コレクションのグループ化と統計のために Collectors クラスを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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