以下のように記述されたJAVAクラスがあります。
public class Hello {
public String field1;
public String field2;
public String field3;
}
今、私が持っているlist
のHello
オブジェクトを、私がして、リスト要素グループ化したいですfield1
。私の問題は、field3
すべてのHello
オブジェクトフィールドではなく、グループ化された要素のセットのみを使用することです。
たとえば、出力として、マップを取得します。
field1Value1 -> [field3Value1, field3Value2, field3Value3]
field1Value2 -> [field3Value4, field3Value5, field3Value6]
もちろん蒸気を使ってそれをやろうとしました:
HelloList.stream.collect(Collectors.groupingBy(Hello::field1, Collectors.toSet()));
上記のように、Hello
によってマップされたオブジェクトのセットを取得しますがfield1
、残念ながらそれは私が望むものではありません。
私はあなたが探していると思いますCollectors.mapping
:
helloList.stream()
.collect(groupingBy(Hello::field1, mapping(Hello::field3, toSet())));
一般に、JavadocをCollectors
手元にmapping
置いcollectingAndThen
ておくことをお勧めします。これは、便利な合成操作(this やその逆など)が多数あり、このような質問がある場合は、適切なツールを見つけるためのリスト。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加