Frage Gibt es etwas, was hashmap tun kann, aber Karte nicht?


Ich weiß nur, dass der Unterschied zwischen hashmap und map darin besteht, dass hashmap mit einer Hash-Funktion implementiert ist, aber map mit einem Baum implementiert ist. Kann irgendjemand mehr etwas hinzufügen?

Basierend darauf, gibt es etwas, was hashmap tun kann, aber Karte kann nicht?


5
2018-03-30 00:20


Ursprung


Antworten:


  • Hashmaps haben im Durchschnitt bessere Ergebnisse für den Zugriff (O (1)), aber schlechtere Worst-Case-Werte (O (n)). Karten sind immer O (lg (n)).

  • Karten sind nach ihrem Schlüssel geordnet, hashmaps nicht.

  • Hashmaps verwenden im Allgemeinen mehr Speicher als Karten.

  • Maps ermöglichen in der Regel eine schnellere Iteration.

  • Gute Hash-Funktionen sind schwieriger zu schreiben als gute Ordnungsfunktionen (und schwieriger zu analysieren).

Ich glaube nicht, dass es etwas gibt, was eine Hashmap tun kann, was eine Karte nicht kann.


10
2018-03-30 00:24



Eine Karte erfordert, dass der Schlüssel eine streng schwache Ordnung hat, die möglicherweise nicht existiert. Eine Hashmap benötigt nur eine Hash-Funktion. Auf diese Weise kann eine Hashmap mit Schlüsseln verwendet werden, die keine streng schwache Ordnung haben.


3
2018-03-30 01:09



Ein Vorteil von hashhmaps gegenüber Bäumen besteht darin, dass Sie in einer Multithreading-Umgebung den gesamten Container nicht sperren müssen, um einen einzelnen Schlüssel hinzuzufügen oder zu entfernen - das Sperren des einzelnen relevanten Eintrags in der Hash-Tabelle ist (fast) ausreichend.

Fast, weil möglicherweise Metadaten (z. B. die Anzahl der Elemente in der Hashtabelle) aktualisiert werden müssen. Und Sie müssen wahrscheinlich den gesamten Tisch sperren, um ihn zu vergrößern oder zu verkleinern.


0
2018-03-30 01:14