アリウス派:
私は、クラスAのオブジェクトのリストを持っています:
List<A> list;
class A {
String name;
String lastname;
//Getter and Setter methods
}
私は名前からlastnamesのセットにマップにこのリストを変換したいです:
Map<String, Set<String>> map;
たとえば、次のリストのために:
ジョン・アーチャー、ジョン・アゲート、トムKeinanen、トム・バーレン、シンディ・キング
マップは次のようになります。
ジョン - > {アーチャー、瑪瑙}、トム - > {Keinanen、不毛}、シンディ - > {}キング
私は、次のコードを試してみましたが、それは、クラスAのオブジェクトに名前からマップを返します。
list.stream.collect(groupingBy(A::getFirstName, toSet()));
全おかげでガイ:
Map< String, Set<String>> map = list.stream()
.collect(
Collectors.groupingBy(
A::getFirstName, Collectors.mapping(
A::getLastName, Collectors.toSet())));
あなたが使用する必要が正しい軌道に乗っていました:
Collectors.groupingBy
でグループへfirstName
。そして、その後のような下流のコレクタを使用
Collectors.mappping
する第二パラメータとCollectors.groupingBy
にマッピングしますlastName
。そして、最後に収集することをで
Set<String>
呼び出すことによりCollectors.toSet
: