新しい 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 サイトの他の関連記事を参照してください。