Heim  >  Artikel  >  Java  >  Sammlung klassischer Java-Interviewfragen (8)

Sammlung klassischer Java-Interviewfragen (8)

王林
王林nach vorne
2020-07-16 17:11:472163Durchsuche

Sammlung klassischer Java-Interviewfragen (8)

1. Der Unterschied zwischen Collection und Collections

(weitere verwandte Interviewfragen empfohlen: Java-Interviewfragen)

java.util.Collection ist die übergeordnete Schnittstelle eines Sammlungsframeworks. 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 möglichst einheitliche Betriebsmethode für verschiedene spezifische Collections bereitzustellen.

java.util.Collections ist eine Wrapper-Klasse. Es enthält verschiedene statische polymorphe Methoden im Zusammenhang mit Sammlungsvorgängen. Diese Klasse kann nicht instanziiert werden und ähnelt einer Dienstprogrammklasse, die das Collection-Framework von Java bedient. Es bietet eine Reihe statischer Methoden zum Implementieren von Vorgängen wie Suchen, Sortieren und Thread-Sicherheit für verschiedene Sammlungen.

2. Die Elemente in Set können nicht wiederholt werden. Wie kann man also unterscheiden, ob sie wiederholt werden oder nicht? Sollte ich == oder equal() verwenden? Was ist der Unterschied zwischen ihnen?

==:

Grundtyp: Der Vergleich ist, ob die Werte gleich sind

Referenztyp: Der Vergleich ist, ob die Adresswerte gleich sind sind gleich

equals ():

Referenztyp: Standardmäßig wird der Adresswert verglichen, der überschrieben werden kann. Der Vergleich besteht darin, ob die Werte der Mitgliedsvariablen des Objekts gleich sind das gleiche.

Wenn eine Klasse keine eigene Equals-Methode definiert, verwendet ihre Standard-Equals-Methode (geerbt von der Object-Klasse) den ==-Operator, der auch vergleicht, ob die Objekte, auf die die beiden Variablen zeigen, dasselbe Objekt sind Zu diesem Zeitpunkt führt die Verwendung von equal zum gleichen Ergebnis wie die Verwendung von ==. Wenn zwei unabhängige Objekte verglichen werden, wird immer false zurückgegeben.

Wenn die von Ihnen geschriebene Klasse vergleichen möchte, ob der Inhalt zweier von der Klasse erstellter Instanzobjekte gleich ist, müssen Sie die Methode „equals“ überschreiben und Ihren eigenen Code schreiben, um zu entscheiden, unter welchen Umständen zwei Objekte sein können berücksichtigt Der Inhalt ist derselbe.

(empfohlene verwandte Tutorials: Java-Einführungs-Tutorial)

3. Welche Rolle spielt der Iterator? Das Durchlaufen von Sammlungen Elementen in hat Vorteile gegenüber for und for every:

meldet keine Ausnahme aufgrund der Knotenlöschung und Sie können es auch mit Ihrer eigenen Datenstruktur implementieren.

4. Was ist der Unterschied zwischen HashSet und TreeSet und wann werden sie verwendet?

Grundlegend:

1. TreeSet ist als Binärbaum implementiert. Die Daten in Treeset werden automatisch sortiert und Nullwerte sind nicht zulässig.

2. HashSet wird durch eine Hash-Tabelle implementiert. Sie können Nullen eingeben, aber Sie können nur eine Null eingeben, genau wie die Datenbank einzige Einschränkung.

3. HashSet erfordert, dass das eingefügte Objekt die HashCode()-Methode implementiert. Das eingefügte Objekt wird durch den Hashcode-Code identifiziert, der denselben Hashcode aufweist, also den eingefügten Inhalt kann nicht wiederholt werden. Aber Objekte derselben Klasse können in verschiedene Instanzen eingefügt werden.

(Empfohlenes Video-Tutorial:

Java-Video-Tutorial

)

Zeitkomplexität:

HashSet wird durch eine Hash-Tabelle implementiert, daher sind die Elemente vorhanden ungeordnet. Die zeitliche Komplexität der Methoden add(), remove() und contains() beträgt O(1).

TreeSet wird durch eine Baumstruktur implementiert und die darin enthaltenen Elemente sind geordnet. Daher beträgt die zeitliche Komplexität der Methoden add(), remove() und contains() O(logn).

Wenn Sie TreeSet zum Speichern benutzerdefinierter Klassenobjekte verwenden, muss die Klasse, in der sich die Anpassung befindet, die Comparable-Schnittstelle implementieren. Wenn diese Schnittstelle nicht implementiert ist, kann die Größenbeziehung nicht unterschieden werden, und wenn Sie in der sortieren möchten TreeSet, dann Um alle Felder zu vergleichen, das heißt, in TreeSet, verlassen wir uns darauf, ob die Methode Compare () 0 zurückgibt, um festzustellen, ob doppelte Elemente vorhanden sind.

TreeSet verlässt sich auf Comparable, um doppelte Daten zu unterscheiden.

HashSet verlässt sich auf hashCode() und equal(), um doppelte Daten zu unterscheiden.

Das obige ist der detaillierte Inhalt vonSammlung klassischer Java-Interviewfragen (8). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen