Sie Ihre multimap invertieren und als Karte angezeigt, durchlaufen seine Einträge:
Multimap<String, String> inverse = Multimaps.invertFrom(multimap, HashMultimap.create());
for (Map.Entry<String, Collection<String>> entry : inverse.asMap().entrySet()) {
String value = entry.getKey();
Iterator<String> keysIterator = entry.getValue().iterator();
assert keysIterator.hasNext() : "there is always at least one key";
keysIterator.next(); // skip first key
while (keysIterator.hasNext()) { // each additional key is a duplicate
String key = keysIterator.next();
System.out.println(String.format("Key-%s,Value-%s", key, value));
}
}
Ausgabe:
Key-20013,Value-13123
Wenn Sie eine ImmutableMultimap
dann statt Multimaps.invertFrom(Multimap, M)
verwenden Sie einfach ImmutableMultimap.inverse()
verwenden können:
ImmutableMultimap<String, String> inverse = multimap.inverse();
Wenn Sie einfach eine Karte von duplizierten Werte zu den jeweiligen Tasten wollen, dann können Sie Maps.filterValues(Map, Predicate)
verwenden:
Map<String, Collection<String>> keysByDuplicatedValue = Maps.filterValues(inverse.asMap(),
keys -> keys.size() > 1);
Welche wird Ihnen eine Karte wie unten:
{13123=[20014, 20013]}
Welche Multimap? die Guave eins? –
Ja die Guave eins. – Leo
Warum nicht key-20014, Wert-13123? – Henry