Javaストリームを使用して、リストList<A>
のようなPOJOのリストを実行し、マップMap<String, Set<String>>
に変換します。例えば、クラスAはJavaストリームCollectors.toMapの値がセット
されています:
class A {
public String name;
public String property;
}
私は以下のコードは、マップMap<String, String>
に値を収集書いた:
final List<A> as = new ArrayList<>();
// the list as is populated ...
// works if there are no duplicates for name
final Map<String, String> m = as.stream().collect(Collectors.toMap(x -> x.name, x -> x.property));
しかし、同じで複数のPOJOがあるかもしれませんので、 name
、地図の値をSet
にします。すべてproperty
同じキーname
の文字列は同じセットに入れる必要があります。
はどのようにこれを行うことができますか?
// how do i create a stream such that all properties of the same name get into a set under the key name
final Map<String, Set<String>> m = ???
小さな補正としての
SetUtils::union
を使用することができ、私はそれが輸入静的java.util.stream.Collectorsすべきだと思います*。修正 – tkjaWoops、:D – Nevay
あなたは、単一のラムダパラメータを括弧で囲む必要はありません。 – shmosel