Javaで地図にリスト値地図<キー、リスト<バリュー>>と反転地図<バリュー、キー> 8

Shessuky:

Iキーで値をグループ化する地図の種類を持ってMap<String, List<Integer>>、私は対応するキーにそれぞれの値をマッピングするために戻したいです

例:私は以下のコードを変換したいです

Map<String, List<Integer>> mapOfIntList = new HashMap<String, List<Integer>>();

mapOfIntList.put("UNIT", Arrays.asList(1, 2, 3, 8, 7, 0, 8, 6));
mapOfIntList.put("TEN", Arrays.asList(24, 90, 63, 87));
mapOfIntList.put("HUNDRED", Arrays.asList(645, 457, 306, 762));
mapOfIntList.put("THOUSAND", Arrays.asList(1234, 3456, 5340, 9876));

(1、 "UNIT")、(2、 "UNIT")...(24、 "TEN")、(90、 "TEN")...(:私は見つけることができます別の地図(整数、文字列)へ645、 "百")...(3456、 "千")...

ホルガー:

あなたは使用することができます

Map<Integer, String> mapNumberToType = mapOfIntList.entrySet().stream()
    .collect(HashMap::new, (m,e)->e.getValue().forEach(v->m.put(v,e.getKey())), Map::putAll);

あなたがとの類似性を認識することができるforEachのベースコードこの回答に渡される第二の機能内collect(アキュムレータ)関数。順次実行のために、彼らは基本的に同じことが、このストリーム・ソリューションは、並列処理をサポートしています。それはローカルコンテナの作成をサポートするために、それらをマージし、他の二つの機能を必要とする理由です。

参照して変更可能な削減ドキュメントのセクションを。

おすすめ

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