0
Let'sは、私は文字列/リストのキーは、文字をある元に戻すキー/値の地図
Map<String, List<String>> map = new HashMap<>();
map.put("product1", Arrays.asList("res1", "res2"));
map.put("product2", Arrays.asList("res1", "res2"));
の地図を持って、その値は今、「数字」
のリストであることを言いました私が達成しようとしているのは、マップ上で反復され、キーとして「数値」のマップを返し、値として「文字」を返します。今の
<"res1", List<"product1","product2" >>
<"res2", List<"product1","product2" >>
ような何か、私はそれを行うために管理しますが、二段階で、そしてコードはかなり
@Test
public void test2() throws InterruptedException {
List<String> restrictions = Arrays.asList("res1", "res2");
Map<String, List<String>> productsRes = new HashMap<>();
productsRes.put("product1", restrictions);
productsRes.put("product2", restrictions);
ArrayListMultimap multiMap = productsRes.keySet()
.stream()
.flatMap(productId -> productsRes.get(productId)
.stream()
.map(restriction -> {
Multimap<String, List<String>> multimap = ArrayListMultimap.create();
multimap.put(restriction, Arrays.asList(productId));
return multimap;
}))
.collect(ArrayListMultimap::create, (map, restriction) -> map.putAll(restriction),
ArrayListMultimap::putAll);
Map<String, List<String>> resProducts = Multimaps.asMap(multiMap);
}
どれ提案verbouseようです?。
ありがとうございます!
ちょうどfyi:guavaには、すでにMultimapのマッピングを逆転させる方法があります。http://stackoverflow.com/questions/3678601/how-to-do-map-inversion-with-guava-with-non-一意の値。 –