Unterschied zwischen Hashmap und LinkedHasMap
- 4506
- 779
- Prof. Dr. Charleen Lammert
HashMap und LinkedHasMap sind zwei der häufigsten und allgemeinen Kartenimplementierungen in der Java-Plattform. Sie sind im Grunde genommen Hash-basierte Klassen, die einander ziemlich ähnlich sind und zum Erstellen einer Karte verwendet werden. Die Kartenschnittstelle ist die letzte der wichtigsten Grenzflächen für Sammlungen, die die Operationen definiert, die durch eine Reihe von Schlüssel-zu-Wert-Assoziationen unterstützt werden, in denen die Schlüssel eindeutig sind. Diese Kartenimplementierungen basieren auf einem Hashing -Algorithmus. Während die Klasse Hashmap ungeordnete Karten implementiert, implementiert die Klasse LinkedHasMap geordnete Karten. Die LinkedHasMap -Implementierung ist eine Unterklasse der HashMap -Klasse, was bedeutet, dass sie die Merkmale von Klassenhashmap erbt. Es gibt keinen großen Unterschied zwischen den beiden in Bezug auf die Leistung. Lass uns einen Blick darauf werfen.
Was ist Hashmap?
HashMap ist eine der häufigsten und unter den vier allgemeinen Implementierungen der Kartenschnittstelle in Java basierend auf einem Hashing-Algorithmus. Es ist analog zum festgelegten Klassen -Hashset, obwohl die Elemente in beiden Klassen nicht ordnungsgemäß sind. Es wird als Hash -Tabelle implementiert, aber im Gegensatz zu LinkedHasMap hält es keine Reihenfolge für Schlüssel oder Werte bei. Im Allgemeinen bietet HashMap konstante Leistung für Put und Get. Die Klasse ist nicht mit Thread-Sicherheit, aber sie ermöglicht einen Nullschlüssel und mehrere Nullwerte. Da es keine iterierende Reihenfolge beibehält, erfordert es weniger Speicher.
Was ist LinkedHasMap?
LinkedHasMap gehört zu den vier allgemeinen Implementierung der Kartenschnittstelle, die eine Unterklasse der HashMap-Klasse ist, was bedeutet, dass sie ihre Funktionen erbt. Obwohl es HashMap in Bezug auf die Leistung sehr ähnlich ist, außer es führt die Einfügungsreihenfolge der Schlüssel bei, entweder in der Reihenfolge, in der die Schlüssel in die Karte eingefügt werden. Es verfeinert den Vertrag seiner Elternklasse, indem es die Bestellung garantiert, in der Iteratoren ihre Elemente zurücksenden. Es erfordert jedoch mehr Speicher als ein HashMap, da es eine doppelt verknüpfte Liste in Java beibehält.
Unterschied zwischen Hashmap und LinkedHasMap
-
Grundlagen von Hashmap vs. LinkedHasMap
HashMap ist eine Hash-basierte Implementierung der MAP-Schnittstelle in Java. Karten sind eine Sammlung von Schlüsselwertpaaren und werden verwendet, wenn Listen in der geordneten Sammlung sind. HashMap ist eine Sammelklasse, die den Wert in Schlüsselwertpaaren speichert. In einfachen Worten ordnet es Schlüssel zu Werten ab, was bedeutet, dass er einen Wert basierend auf einem Schlüssel finden kann. LinkedHashMap ist eine verknüpfte List -Implementierung der Kartenschnittstelle, genau wie HashMap, außer dass sie Aufträge von Elementen verwaltet, die in sie eingefügt wurden. Es ist eine Unterklasse von Hashmap, die seine Merkmale erbt. LinkedHashMap verfeinert den Vertrag seiner übergeordneten Klasse Hashmap, indem er die Reihenfolge garantiert, in der Iteratoren seine Elemente zurückgeben.
-
Iterationsreihenfolge
Der Hauptunterschied zwischen HashMap und LinkedHasMap ist die Ordnung. Elemente einer Hashmap sind nicht in Ordnung, völlig zufällig, während Elemente von LinkedHasMap bestellt werden. Die Einträge einer LinkedHasMap sind in der Schlüsseleinfügungsreihenfolge, in der die Reihenfolge, in der die Schlüssel in die Karte eingefügt werden. Dies bedeutet, dass der erste in die Karte eingefügte Schlüssel zuerst aufgezählt wird, ebenso wie der damit verbundene Wert und der letzte Eintrag, der in aufzähliger zuletzt eingefügt wurde. LinkedHashMap verfügt.
-
Implementierung
Sowohl HashMap- als auch LinkedHasMap -Klassen verwenden Hashing, um die Kartenschnittstelle in Java zu implementieren, außer HashMap wird als Hash -Tabelle implementiert, während LinkedHasMap eine doppelt verknüpfte Liste von Eimer beibehält, die alle seine Einträge durchlaufen. Aus diesem Grund benötigt LinkedHashMap mehr Speicher als HashMap, da es im Gegensatz zu HashMap eine Bestellung unterhält. Es entfernt die chaotische Bestellung durch Hashmap, ohne die zusätzlichen Kosten zu entstehen, die ansonsten mit Treemap entstanden sind. Außerdem ist die LinkedHasMap -Klasse der HashMap -Klasse in vielen Aspekten wie Synchronisation und Nullschlüssel/Werten sehr ähnlich, da beide einen Nullschlüssel und mehrere Nullwerte zulassen.
-
Leistung für Hashmap vs. LinkedHasMap
Obwohl beide Klassen eine vergleichbare Leistung bieten, wird angenommen, dass die HashMap -Klasse die bevorzugte Wahl ist, wenn die Bestellung kein Problem darstellt. Operationen wie das Hinzufügen, Entfernen oder Finden von Einträgen auf der Grundlage eines Schlüssels sind die konstante Zeit, da sie den Schlüssel haben. Das Hinzufügen, Entfernen und Finden von Einträgen in einem LinkedHasMap kann also etwas langsamer sein als in einem HashMap. Darüber hinaus benötigt HashMap weniger Speicher als linkedHasMap, da keine Bestellung aufrechterhalten wird.
Hashmap vs. LinkedHasMap: Vergleichstabelle
Zusammenfassung von Hashmap vs. LinkedHasMap
Während sowohl Hashmap- als auch HashMap Eine LinkedHasMap. Der Hauptunterschied zwischen den beiden ist jedoch die Reihenfolge: Die Elemente eines Hashmap sind nicht in Ordnung, während die Elemente einer LinkedHasMap standardmäßig in der Schlüsseleinfügungsreihenfolge sind, was bedeutet, dass die Reihenfolge, in der die Schlüssel in die Karte eingefügt werden. LinkedHasMap kann seine Elemente auch in Zugriffsreihenfolge pflegen, was bedeutet, dass die Reihenfolge, in der die Einträge zugegriffen werden. Wie bei LinkedHasMap muss eine doppelt verknüpfte Liste beibehalten werden, sie hat weniger Leistung als HashMap.