/ / Überprüfen Sie, ob ein Wert in der Hashmap bereits vorhanden ist - Java, Hashmap, Duplikate

Prüfen Sie, ob bereits ein Wert in Hashmap vorhanden ist - Java, Hashmap, Duplikate

Ich habe eine HashMap erstellt, die String-Werte enthält. Ich möchte jedes Mal, wenn ich der Karte einen neuen Wert hinzufüge, prüfen, ob er bereits in der Hashmap vorhanden ist. Ich habe definiert

final HashMap<String, String> map = new HashMap<String, String>(); map.put(key, myURL.toString());

Wie kann ich die Hashmap durchlaufen, um zu überprüfen, ob ein Duplikat vorhanden ist?

Antworten:

7 für die Antwort № 1

map.containsKey(key)

map.containsValue(val)

Wenn Sie darauf bestehen, es zu wiederholen, tun Sie Folgendes:

Iterator<Entry<String, String>>iterator=map.entrySet();
while(iterator.hasNext()){
final Entry<String, String>next=iterator.next();
next.getKey(); next.getValue();
}

Spezifiziert durch: http://docs.oracle.com/javase/7/docs/api/java/util/Map.html


11 für die Antwort № 2

Einfach:

return map.containsValue(myURL.toString());

beispielsweise. Oder mit Java8-Streams:

return map.values().stream().anyMatch(v -> v.equals(myURL.toString()))

Aber wie du fragst effizient Lösungen, ich schlage vor, Sie gehen mit der Old-School-Non-Stream-Version. Denn die zweite Version verbraucht höchstwahrscheinlich deutlich mehr CPU-Zyklen.

Nur wenn deine Map hat Zillionen von Einträgen, und Sie suchen auf Reaktionszeit erst dann vielleicht mit parallelStream() könnte Ihnen die Antwort mehr geben schnell.


2 für die Antwort № 3

map.containsValue Methode ist, was Sie brauchen. Sehen Dok


1 für die Antwort № 4

Überprüfen Sie die Javadocs der Klasse. Sie werden sehen, dass es zwei Methoden gibt, die key und containvalue enthalten http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html


1 für die Antwort № 5
boolean result = selections.values().stream().anyMatch(Boolean::booleanValue);

0 für die Antwort № 6

Apropos Effizienz: Das Vorhandensein dieser Datenstruktur ist ein Beweis für Ineffizienz und schlechtes Design. containsValue(V) ist die Methode, nach der Sie suchen