Javaストリームでcollectors.groupingByと返されたマップ値の型を変更します

ラジクマールNatarajan:

私はのクラス定義の下に持っていますEntry-

public class Entry {
    private String key;
    private String Value;
    // getters and setters
    // equals hashcode toString
}

私は、一覧ましEntryデータベースからオブジェクトを。私は彼ら地図があるべき結果のキーと値に基づいてグループ化しますSet<value>

私が試したし、以下のコードで終わります。

Map<String, Set<Entry>> groupedEntries =  
        entryList.findAll()
                 .stream()
                 .collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(), Collectors.toSet()));

このコードの問題は、結果の型があるMap<String, Set<Entry>>が、私はなりたいですMap<String, Set<String>>

それは、単一の収集でこれを行うことは可能でしょうか?

Ousmane D .:

使用mappingコレクタ:

.collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(), 
                  Collectors.mapping(Entry::getValue, Collector.toSet())));

おすすめ

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