Heim >Java >javaLernprogramm >Wann sollte ich „HashMap' vs. „Map' in Java verwenden?
Unterschiede zwischen HashMap und Map in Java
Beim Erstellen einer Kartensammlung in Java verwenden wir normalerweise die HashMap-Klasse. Wir können es jedoch auch als Map-Schnittstelle deklarieren. Dies wirft die Frage auf: Was ist der Unterschied zwischen diesen beiden Ansätzen?
Der Hauptunterschied liegt in der Art des Zugriffs, den wir auf das Objekt haben. Durch die Verwendung von HashMap wird ein Objekt mit einer HashMap-Schnittstelle erstellt, während Map dasselbe Objekt mit einer Map-Schnittstelle bereitstellt. Das zugrunde liegende Objekt bleibt in beiden Fällen dasselbe.
Der Vorteil der Verwendung der Map-Schnittstelle besteht in der Möglichkeit, die zugrunde liegende Implementierung zu ändern, ohne den Vertrag mit dem Code zu brechen, der sie verwendet. Wenn die Karte als HashMap deklariert ist, erfordert jede Änderung in der Implementierung eine Aktualisierung des Vertrags.
Betrachten Sie zur Veranschaulichung das Beispiel einer Klasse Foo, die interne Karten enthält, die mit Unterklassen geteilt werden. Wenn Foo mit HashMaps initialisiert wird und eine Unterklassenmethode sowohl Things als auch moreThings mit dem deklarierten HashMap-Typ verarbeitet, würde die Änderung von Foo zur Verwendung von TreeMap den Code beschädigen.
Hätte Foo jedoch Things und moreThings stattdessen als Map deklariert HashMap, sowohl Foo als auch die Unterklasse bleiben unberührt, selbst wenn die Implementierung in TreeMap geändert wird.
Daher, sofern nicht Es gibt einen bestimmten Grund, die spezifische Implementierung zu verwenden. Es gilt als bewährte Methode, auf der allgemeinsten Schnittstelle (Map in Java) zu programmieren. Dieser Ansatz erhöht die Flexibilität und gewährleistet die Widerstandsfähigkeit gegenüber Implementierungsänderungen.
Das obige ist der detaillierte Inhalt vonWann sollte ich „HashMap' vs. „Map' in Java verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!