Heim  >  Artikel  >  Java  >  Häufige Interviewfragen zu Java-Containern

Häufige Interviewfragen zu Java-Containern

(*-*)浩
(*-*)浩Original
2019-12-18 15:17:342241Durchsuche

Häufige Interviewfragen zu Java-Containern

Was sind die Java-Container? (Empfohlenes Lernen: Häufige Java-Testfragen )

Häufige Interviewfragen zu Java-Containern

Was ist der Unterschied zwischen?

java.util.Collection ist eine Sammlungsschnittstelle (eine Schnittstelle der obersten Ebene für Sammlungsklassen). Es bietet allgemeine Schnittstellenmethoden für grundlegende Operationen an Sammlungsobjekten. Die Collection-Schnittstelle verfügt über viele spezifische Implementierungen in der Java-Klassenbibliothek.

Die Bedeutung der Collection-Schnittstelle besteht darin, eine maximierte einheitliche Betriebsmethode für verschiedene spezifische Sammlungen bereitzustellen. Zu den direkt geerbten Schnittstellen gehören List und Set.

Collections ist eine Werkzeugklasse/Hilfsklasse der Collection-Klasse, die eine Reihe statischer Methoden für verschiedene Vorgänge wie Sortieren, Suchen und Thread-Sicherheit von Elementen in der Collection bereitstellt

Was ist der Unterschied zwischen Liste, Satz und Karte?

Häufige Interviewfragen zu Java-Containern

Was ist der Unterschied zwischen HashMap und Hashtable?

hashMap entfernt die Methode „contains“ von HashTable, fügt jedoch die Methoden „containsValue()“ und „containsKey()“ hinzu.

HashTable ist synchron, während HashMap asynchron und effizienter als hashTable ist.

hashMap erlaubt leere Schlüsselwerte, hashTable jedoch nicht.

Wie kann man entscheiden, ob man HashMap oder TreeMap verwendet?

Für Vorgänge wie das Einfügen, Löschen und Positionieren von Elementen in Map ist HashMap die beste Wahl. Wenn Sie jedoch eine geordnete Sammlung von Schlüsseln durchlaufen müssen, ist TreeMap die bessere Wahl. Abhängig von der Größe Ihrer Sammlung kann es schneller sein, Elemente zu einer HashMap hinzuzufügen und die Karte durch eine TreeMap für die geordnete Schlüsseldurchquerung zu ersetzen.

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.

Wenn wir ein Element in die Hashmap einfügen, berechnen wir zunächst den Hashwert basierend auf dem Hashcode des Schlüssels und ermitteln die Position (Index) des Elements im Array basierend auf dem Hashwert Das Array ist bereits an dieser Position gespeichert. Wenn andere Elemente hinzugefügt werden, werden die Elemente an dieser Position in Form einer verknüpften Liste gespeichert, wobei die neu hinzugefügten Elemente an der Spitze der Kette und die ersten hinzugefügten Elemente an der Position platziert werden Wenn sich an dieser Position im Array kein Element befindet, wird das Element direkt an dieser Position im Array in die verknüpfte Liste eingefügt.

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 Original O(n) Zu O(logn)

über das Implementierungsprinzip von HashSet sprechen?

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

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 bidirektionale 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.

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.

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.

Was ist der Unterschied zwischen Array und ArrayList?

Array kann grundlegende Typen und Objekte enthalten, während ArrayList nur Objekte enthalten kann.

Array ist nach Angabe der Größe unveränderlich, während die Größe von ArrayList variabel ist.

Array bietet nicht so viele Funktionen wie ArrayList, wie z. B. addAll, removeAll und iterator.

Was ist der Unterschied zwischen poll() und remove() in der Warteschlange?

Poll() und remove() nehmen beide ein Element aus der Warteschlange, aber poll() gibt leer zurück, wenn das Element nicht abgerufen werden kann, aber remove() löst eine Ausnahme aus, wenn dies der Fall ist scheitert.

Welche Sammlungsklassen sind threadsicher?

vector: Es verfügt über einen Synchronisationsmechanismus mehr (Thread-Sicherheit) als arraylist. Aufgrund seiner geringen Effizienz wird seine Verwendung nicht mehr empfohlen. Bei Webanwendungen, insbesondere Frontend-Seiten, steht die Effizienz (Seitenreaktionsgeschwindigkeit) oft im Vordergrund.

statck: Stapelklasse, zuerst rein, zuletzt raus.

Hashtable: Es ist threadsicherer als Hashmap.

Aufzählung: Aufzählung, äquivalent zum Iterator.

Was ist ein Iterator?

Ein Iterator ist ein Entwurfsmuster, bei dem es sich um ein Objekt handelt, das Objekte in einer Sequenz durchläuft und auswählt, ohne dass der Entwickler die zugrunde liegende Struktur der Sequenz kennen muss. Iteratoren werden oft als „leichtgewichtige“ Objekte bezeichnet, weil sie kostengünstig zu erstellen sind.

Wie verwende ich Iterator? Was sind die Merkmale?

Die Iterator-Funktion in Java ist relativ einfach und kann sich nur in eine Richtung bewegen:

(1) Verwenden Sie die Methode iterator(), um den Container aufzufordern, eine zurückzugeben Iterator. Wenn die next()-Methode des Iterators zum ersten Mal aufgerufen wird, gibt sie das erste Element der Sequenz zurück. Hinweis: Die Methode iterator() ist die Schnittstelle java.lang.Iterable und wird von Collection geerbt.

(2) Verwenden Sie next(), um das nächste Element in der Sequenz abzurufen.

(3) Verwenden Sie hasNext(), um zu prüfen, ob noch Elemente in der Sequenz vorhanden sind.

(4) Verwenden Sie „remove()“, um das vom Iterator neu zurückgegebene Element zu löschen.

Iterator ist die einfachste Implementierung des für List entwickelten Java-Iterators. Er kann List in zwei Richtungen durchlaufen und auch Elemente aus List einfügen und löschen.

Was ist der Unterschied zwischen Iterator und ListIterator?

Iterator kann zum Durchlaufen von Set- und List-Sammlungen verwendet werden, ListIterator kann jedoch nur zum Durchlaufen von List verwendet werden.

Iterator kann eine Sammlung nur vorwärts durchlaufen, während ListIterator sowohl vorwärts als auch rückwärts durchlaufen kann.

ListIterator implementiert die Iterator-Schnittstelle und enthält weitere Funktionen, z. B. das Hinzufügen von Elementen, das Ersetzen von Elementen, das Abrufen des Index des vorherigen und nächsten Elements usw.

Das obige ist der detaillierte Inhalt vonHäufige Interviewfragen zu Java-Containern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn