ホームページ  >  記事  >  Java  >  Java 8 のストリーム API:collect() メソッドを使用してコレクションを Map オブジェクトとして収集する方法

Java 8 のストリーム API:collect() メソッドを使用してコレクションを Map オブジェクトとして収集する方法

WBOY
WBOYオリジナル
2023-07-31 15:24:191919ブラウズ

新しい Stream API が Java 8 で導入され、コレクション データをより効率的かつ簡潔に処理する方法が提供されます。 Stream API は、データを処理および変換するためのさまざまなメソッドを提供します。その中で、collect() メソッドは、最も重要で一般的に使用されるメソッドの 1 つです。この記事では、collect() メソッドを使用してコレクションを Map オブジェクトに収集する方法を説明し、対応するコード例を示します。

Java 8 より前は、コレクションを Map オブジェクトに変換したい場合、面倒なトラバーサル操作と追加操作を使用する必要がありました。 Java 8 では、Stream API の collect() メソッドを使用して、この目標をより簡単に達成できます。

collect() メソッドは、Stream API の終了操作の 1 つであり、Collector パラメータを受け取り、収集方法を指定します。 Map オブジェクトとして収集する場合は、Collectors.toMap() メソッドを使用して収集できます。

以下は、collect() メソッドを使用してコレクションを Map オブジェクトに収集するサンプル コードです。

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

public class StreamCollectExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange");

        Map<String, Integer> fruitLengthMap = fruits.stream()
                .collect(Collectors.toMap(
                        fruit -> fruit,                   // Key 映射函数
                        fruit -> fruit.length()           // Value 映射函数
                ));

        System.out.println(fruitLengthMap);
    }
}

上記のコードでは、最初に3 つのフルーツを含むコレクション fruits を収集し、stream() メソッドを介してストリームに変換します。次に、collect() メソッドを使用し、パラメータとして Collectors.toMap() メソッドを渡します。このメソッドは、キーと値のマッピング関数を指定するための 2 つのラムダ式パラメータを受け取ります。

この例では、キー マッピング関数は fruit ->fruit で、フルーツをキーとして受け取り、値マッピング関数は fruit ->fruit.length( )、つまり果物の長さが値として使用されます。最後に、collect() メソッドは、指定されたマッピング関数に従ってストリーム内の要素を処理し、Map オブジェクトを返します。

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

{orange=6, banana=6, apple=5}

ご覧のとおり、最終的に果物とその長さを含む Map オブジェクトを取得しました。

基本的なコレクション関数に加えて、Collectors.toMap() メソッドは他のパラメーターも提供します。たとえば、競合を解決するマージ関数を渡すことで、キーが重複した場合に何をすべきかを指定できます。

以下は、キーの競合処理を含むサンプル コードです:

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

public class StreamCollectExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange", "apple");

        Map<String, Integer> fruitLengthMap = fruits.stream()
                .collect(Collectors.toMap(
                        fruit -> fruit,                   // Key 映射函数
                        fruit -> fruit.length(),          // Value 映射函数
                        (length1, length2) -> length1    // Key 冲突处理函数
                ));

        System.out.println(fruitLengthMap);
    }
}

上記のコードでは、toMap() メソッドの 3 番目のパラメーターの位置を入力します。マージ関数(length1, length2) -> length1 が作成されます。この関数は、重複したキーが見つかった場合に最初のキーを保持し、後続のキーを無視することを選択します。

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

{orange=6, banana=6, apple=5}

Key の競合が発生した場合、最初に出現した Key のみが保持され、他の Key は無視されることがわかります。

Stream API の collect() メソッドを使用すると、コレクションを Map オブジェクトとして簡単に収集でき、Key と Value のマッピング関数や競合を処理する方法。このようにして、収集データをより柔軟に処理し、コードの読みやすさと効率を向上させることができます。

上記は、Java 8 で collect() メソッドを使用してコレクションを Map オブジェクトに収集するための概要とサンプル コードです。この記事が Stream API の使用方法を理解するのに役立つことを願っています。

以上がJava 8 のストリーム API:collect() メソッドを使用してコレクションを Map オブジェクトとして収集する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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