1. Erzählen Sie mir etwas über das Implementierungsprinzip von HashMap?
HashMap-Übersicht: HashMap ist eine asynchrone Implementierung der Map-Schnittstelle basierend auf Hash-Tabellen. Diese Implementierung stellt alle optionalen Zuordnungsvorgänge bereit und ermöglicht Nullwerte und Nullschlüssel. Diese Klasse garantiert nicht die Reihenfolge der Zuordnung und insbesondere nicht, dass die Reihenfolge unveränderlich ist.
HashMap-Datenstruktur: In der Programmiersprache Java gibt es zwei grundlegendste Strukturen, eine ist ein Array und die andere ist ein simulierter Zeiger (Referenz). Alle Datenstrukturen können diese beiden Grundstrukturen verwenden Konstrukt ist HashMap keine Ausnahme. HashMap ist eigentlich eine „Linked-List-Hash“-Datenstruktur, die eine Kombination aus einem Array und einer verknüpften Liste darstellt.
(Empfohlenes Tutorial: Schnellstart mit Java)
Wenn wir Elemente in die Hashmap einfügen, berechnen wir zunächst den Hashwert basierend auf dem Hashcode des Schlüssels neu und Eliminieren Sie den Hash-Wert, um dies zu erhalten. Die Position (Index) des Elements im Array. Wenn das Array bereits andere Elemente an dieser Position speichert, werden die Elemente an dieser Position in Form einer verknüpften Liste mit dem neuen gespeichert Die hinzugefügten Elemente werden am Anfang der Kette platziert und die ersten werden am Ende der Kette platziert. Wenn sich an dieser Position im Array kein Element befindet, wird das Element direkt an dieser Position im Array platziert.
Es ist zu beachten, dass die Implementierung von HashMap in Jdk 1.8 optimiert wurde. Wenn die Knotendaten in der verknüpften Liste acht überschreiten, wird die verknüpfte Liste in einen rot-schwarzen Baum umgewandelt, um die Abfrageeffizienz zu verbessern. vom ursprünglichen O(n) zu O(logn)
2. Erzählen Sie mir etwas über das Implementierungsprinzip von HashSet?
Die unterste Ebene von HashSet wird durch HashMap implementiert
Der Wert von HashSet wird im Schlüssel von HashMap gespeichert
Der Wert von HashMap wird als PRESENT vereinheitlicht
(Verwandtes Lernen: Häufige Fragen zu Java-Interviews)
3. Was ist der Unterschied zwischen ArrayList und LinkedList?
Der offensichtlichste Unterschied besteht darin, dass die zugrunde liegende Datenstruktur von ArrrayList ein Array ist und Direktzugriff unterstützt, während die zugrunde liegende Datenstruktur von LinkedList eine doppelt zirkulär verknüpfte Liste ist und keinen Direktzugriff unterstützt. Um über einen Index auf ein Element zuzugreifen, beträgt die Zeitkomplexität von ArrayList O(1), während die von LinkedList O(n) ist.
4. Wie konvertiert man zwischen Array und Liste?
Liste in Array konvertieren: Rufen Sie die toArray-Methode von ArrayList auf.
Konvertieren Sie ein Array in eine Liste: Rufen Sie die asList-Methode von Arrays auf.
5. Was ist der Unterschied zwischen ArrayList und Vector?
Vector ist synchronisiert, ArrayList jedoch nicht. Wenn Sie jedoch während der Iteration Änderungen an der Liste vornehmen möchten, sollten Sie CopyOnWriteArrayList verwenden.
ArrayList ist schneller als Vector. Es wird aufgrund der Synchronisierung nicht überlastet.
ArrayList ist vielseitiger, da wir mithilfe der Dienstprogrammklasse „Collections“ problemlos synchronisierte Listen und schreibgeschützte Listen erhalten können.
Empfohlene verwandte Video-Tutorials: Java-Video-Tutorial
Das obige ist der detaillierte Inhalt vonFragen zum neuen Java-Interview 2020 – Container (2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!