小编典典
您可以使用MultiMap轻松获取所有这些重复的值。
Map map = new HashMap();
map.put(1, "x");
map.put(2, "y");
map.put(2, "z");
map.put(3, "x");
map.put(4, "y");
map.put(5, "z");
map.put(6, "x");
map.put(7, "y");
System.out.println("Original map: " + map);
Multimap multiMap = HashMultimap.create();
for (Entry entry : map.entrySet()) {
multiMap.put(entry.getValue(), entry.getKey());
}
System.out.println();
for (Entry> entry : multiMap.asMap().entrySet()) {
System.out.println("Original value: " + entry.getKey() + " was mapped to keys: "
+ entry.getValue());
}
打印输出:
Original map: {1=x, 2=z, 3=x, 4=y, 5=z, 6=x, 7=y}
Original value: z was mapped to keys: [2, 5]
Original value: y was mapped to keys: [4, 7]
Original value: x was mapped to keys: [1, 3, 6]
每@ noahz 的建议,forMap并invertFrom需要更少的线,但可以说是更加复杂的阅读:
HashMultimap multiMap =
Multimaps.invertFrom(Multimaps.forMap(map),
HashMultimap. create());
代替:
Multimap multiMap = HashMultimap.create();
for (Entry entry : map.entrySet()) {
multiMap.put(entry.getValue(), entry.getKey());
}
2020-09-26