Ich habe den Grund gelesen/erforscht, warum HashMap
ist schneller als HashSet
.Warum ist HashMap schneller als HashSet?
Ich bin nicht ganz verstehen, die folgenden Aussagen:
HashMap
schneller alsHashSet
ist, weil die Werte zu einem eindeutigen Schlüssel zugeordnet sind.In
HashSet
, Mitglied Objekt wird zur Berechnung Hash-Wert, die für zwei Objekte identisch sein kann, soequals()
Methode wird verwendet, um auf Gleichheit zu prüfen. Wenn esfalse
zurückgibt, bedeutet das, dass die zwei Objekte unterschiedlich sind. InHashMap
wird der Hashcodewert mithilfe des Schlüsselobjekts berechnet.Der Hash-Code
HashMap
wird mithilfe des Schlüsselobjekts berechnet. Hier wird das Member-Objekt verwendet, um den Hash-Code zu berechnen, der für zwei Objekte derselbe sein kann, so dass die Methodeequals()
verwendet wird, um auf Gleichheit zu prüfen. Wenn esfalse
zurückgibt, bedeutet das, dass die zwei Objekte unterschiedlich sind.
Auf meine Frage schließen:
Ich dachte
HashMap
undHashSet
den Hash-Code auf die gleiche Art und Weise berechnen. Warum sind sie anders?Können Sie ein konkretes Beispiel geben, wie
HashSet
undHashMap
den Hashcode anders berechnen?Ich weiß, was ein "Schlüsselobjekt" ist, aber was bedeutet es mit "Mitgliedsobjekt"?
HashMap
kann die gleichen Dinge wieHashSet
tun, und schneller. Warum brauchen wirHashSet
? Beispiel:HashMap <Object1, Boolean>= new HashMap<Object1, boolean>(); map.put("obj1",true); => exist map.get("obj1"); =>if null = not exist, else exist
Sie sollten über den Unterschied zwischen 'Map' und' Set' lesen. Sie sind zwei verschiedene Arten von 'Collection's. Sobald Sie das getan haben, sollte klar sein, warum ein bestimmtes Objekt aus einer Map schneller als aus einem Set ist. – Magnilex
Hashset basiert auf HashMap. Und Set wird für die Einzigartigkeit verwendet. Es ist keine Schlüsselwertpaarsammlung. –
Ja. Ich weiß, dass sie unterschiedliche Schnittstellen implementieren. Aber einige Leute sagen, dass das Hash-Set hashmap im Backend verwendet. Wenn das die Wahrheit ist, warum wird hasset langsamer als hashmap? – runcode