私はリストを持っており、リストは2つの異なるオブジェクトプロパティでグループ化され、値は第3のプロパティを使用する必要があります。例:Java 8ストリームでマップされた値を持つリストのネストされたグループ化方法
Map<String,Map<String,List<A>>> grouppedRecords = list.stream().collect(groupingBy(A::getA, groupingBy(A::getB)));
Map<String,Map<String,List<String>>> results = grouppedRecords.entrySet().stream().collect(Collectors.toMap(
Map.Entry::getKey,
e12 -> e12.getValue().entrySet().stream().collect(Collectors.toMap(
Map.Entry::getKey,
e22 -> e22.getValue().stream().map(A::getC).collect(Collectors.toList())
)))
);
しかし、それは過剰に複雑になります。
[A("1","2","3"),A("1","2","4"),A("1","3","4"),A("2","3","5")]
は、私は次のような構成を使用し、この結果を得るために、今すぐ
{1={2=[3, 4], 3=[4]}, 2={3=[5]}}
に変換する必要があります。あなたは同じ問題を慰めるためのより良い方法で私を助けてくれますか?
あなたがgetC()
へ
A
インスタンスをマップするために
Collectors.mapping
を使用することができます
あなたの説明によると、あなたはむしろしたくない '{(1、2)= [3、4]、(1、 3)= [4]、(2、3)= [5]} '? –
いいえ、ネストされたマッピングを意味します –