今日では、同僚が私の最初の考えは、値及び鍵交換であるとし、グループ内のマップ値に応じてグループ化する方法を尋ね満たさ
次のようにコードの組に対応する異なるキー複数の値は
1
2
地図の<string、整数> =新しい新しいSataMapのHashMap <>();
最終地図<整数、リストの<string >>新しい新しい= GROUPMAPのHashMap <>();
SataMap.put( "A" ,. 1);
SataMap.put( "B" ,. 3 );
SataMap.put( "C"、2);
SataMap.put( "D" ,. 4);
SataMap.put( "E"、2);
SataMap.put( "F" ,. 4);
SataMap.put( "G" ,. 3);
SataMap.put( "H"、2);
のSystem.out.println(結果);
SataMap.forEach(新しい新しいBiConsumer <文字列、整数>(){
@Override
公共ボイドは(文字列キー、整数値)を受け入れます{
IF(groupMap.containsKey(値)){
groupMap.get(値)(キー).add。
}他{
リストの<string>値=新しいのArrayList <>();
values.add(キー);
groupMap.put(値、値)。
}
}
})。
結果はすぐに、より良い方法を見つけるために顔を殴られ、そして私の同僚
マップのMap.Entry <文字列、整数>>> SataMap.entrySet結果=()ストリーム()コレクトの<整数、一覧<(Collectors.groupingBy(C - > c.getValue())); ..
1。
マップに変換されその後、エントリの収集、およびパケットモードのセットを使用し、この機能を達成するために簡単です