Javaのストリームグループ機能の使い方は何ですか?
JavaのStreamでは、要素を指定された条件に従ってグループ化するためのgroup操作があります。これは終端操作であり、グループ化された結果からなるMapオブジェクトを返します。group操作は、要素の特定の属性や条件に基づいてグループ化するキーを生成するためのFunctionオブジェクトを引数として受け入れます。その後、Stream内の要素を生成されたキーに従ってグループ化し、その結果をMapに入れます。
以下はグループ操作のサンプルコードです。
List<String> names = Arrays.asList("John", "Mary", "Jane", "John", "Jane");
// 根据名字的首字母进行分组
Map<Character, List<String>> groupByFirstChar = names.stream()
.collect(Collectors.groupingBy(name -> name.charAt(0)));
System.out.println(groupByFirstChar);
結果は出力されました。
{J=[John, Jane, John, Jane], M=[Mary]}
上記の例では、私達は名前の最初の文字に従って文字列のリストをグループ化しました。groupingByメソッドは、グループ化のキーを生成する方法を定義したFunctionオブジェクトを受け取ります。ここでは、name.charAt(0)を使用して名前の最初の文字をキーとして取得しました。groupingByメソッドは、結果のグループ化からなるMapオブジェクトを返します。ここで、キーはグループのキーであり、値は対応する要素のリストです。
注意すべきは、group操作が返すMapの値はListオブジェクトであり、与えられたキーに対応するすべての要素を含んでいることです。グループ化された結果をさらに処理したい場合は、そのListを操作するために他のStream操作を使用することができます。