Streamsを使用して地図にオブジェクトのリストを変換します

アリウス派:

私は、クラス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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=332118&siteId=1