Frage

Ich bin Guava der containsValue(Object value) die prüft, ob der Multimap den angegebenen Wert für jeden Schlüssel enthält. Sobald ich feststellen, das ist wahr, was der beste Weg ist, sagte Schlüssel zurückzuholen?

ArrayListMultimap<String, Integer> myMap = ArrayListMultimap.create();

if (myMap.containsValue(new Integer(1))
{
   // retrieve the key? 
}
War es hilfreich?

Lösung

Statt containsValue verwenden können Sie über myMap.entries () die eine Sammlung aller Schlüssel-Wert-Paare zurückgibt. Der Iterator durch die Sammlung zurückgegeben erzeugt quert die Werte für einen Schlüssel, gefolgt von den Werten eines zweiten Schlüssels, und so weiter:

Integer toFind = new Integer(1);
for (Map.Entry<String, Integer> entry: myMap.entries()) {
    if (toFind.equals(entry.getValue())) {
        // entry.getKey() is the first match
    }
}
// handle not found case

Wenn Sie bei der Umsetzung aussehen von

scroll top