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
(アキュムレータ)関数。順次実行のために、彼らは基本的に同じことが、このストリーム・ソリューションは、並列処理をサポートしています。それはローカルコンテナの作成をサポートするために、それらをマージし、他の二つの機能を必要とする理由です。
参照して変更可能な削減ドキュメントのセクションを。