In Java werden von den Interviewern am häufigsten Fragen zu Sammlungsinterviews gestellt. Hier ist die Liste der am häufigsten gestellten Sammlungsinterviewfragen mit Antworten.
1) Was ist das Collection-Framework in Java?
Collection Framework ist eine Kombination aus Klassen und Schnittstelle, die zum Speichern und Bearbeiten der Daten in Form von Objekten verwendet wird. Zu diesem Zweck stellt es verschiedene Klassen wie ArrayList, Vector, Stack und HashSet usw. sowie Schnittstellen wie List, Queue, Set usw. zur Verfügung.
2) Was sind die Hauptunterschiede zwischen Array und Sammlung?
Array und Collection ähneln sich in gewisser Weise hinsichtlich der Speicherung der Referenzen von Objekten und der Bearbeitung der Daten, unterscheiden sich jedoch in vielerlei Hinsicht. Die Hauptunterschiede zwischen dem Array und der Sammlung werden im Folgenden definiert:
- Arrays haben immer eine feste Größe, d. h. ein Benutzer kann die Länge des Arrays nicht entsprechend seinen Anforderungen oder zur Laufzeit vergrößern oder verkleinern, aber in der Sammlung kann die Größe je nach Bedarf dynamisch geändert werden.
- Arrays können nur homogene oder ähnliche Objekte speichern, in der Sammlung können jedoch heterogene Objekte gespeichert werden.
- Arrays können nicht die „fertige“ Lösung bereitstellen. Methoden für Benutzeranforderungen wie Sortieren, Suchen usw., aber Collection enthält vorgefertigte Methoden zur Verwendung.
3) Erklären Sie verschiedene Schnittstellen, die im Collection-Framework verwendet werden.
Das Collection Framework implementiert verschiedene Schnittstellen. Die Collection-Schnittstelle und die Map-Schnittstelle (java.util.Map) sind die am häufigsten verwendeten Schnittstellen des Java Collection Framework. Die Liste der Schnittstellen des Collection Framework ist unten aufgeführt:
1. Sammlungsschnittstelle: Sammlung (java.util.Collection) ist die primäre Schnittstelle, und jede Sammlung muss diese Schnittstelle implementieren.
Syntax:
public interface Collectionextends Iterable
Wo bedeutet, dass diese Schnittstelle vom Typ „Generisch“ ist
2. Listenschnittstelle: Die Listenschnittstelle erweitert die Sammlungsschnittstelle und ist eine geordnete Sammlung von Objekten. Es enthält doppelte Elemente. Es ermöglicht auch den wahlfreien Zugriff auf Elemente.
Syntax:
public interface List extends Collection
3. Schnittstelle einstellen: Die Set-Schnittstelle (java.util.Set) ist eine Sammlung, die keine doppelten Elemente enthalten darf. Es können nur geerbte Methoden der Collection-Schnittstelle enthalten sein
Syntax:
public interface Set extends Collection
Warteschlangenschnittstelle: Die Warteschlangenschnittstelle (java.util.Queue) definiert die Warteschlangendatenstruktur, die die Elemente im FIFO-Format (First In First Out) speichert.
Syntax:
public interface Queue extends Collection
4. Dequeue-Schnittstelle: es handelt sich um eine Double-Ended-Queue. Es ermöglicht das Einsetzen und Entfernen von Elementen an beiden Enden. Es implantiert die Eigenschaften von Stapel und Warteschlange, sodass LIFO-Stack-Operationen (Last in First Out) und FIFO-Warteschlangenoperationen (First In First Out) ausgeführt werden können.
Syntax:
public interface Dequeue extends Queue
5. Kartenschnittstelle: Eine Map (java.util.Map) stellt eine Schlüssel-Wert-Paarspeicherung von Elementen dar. Die Kartenschnittstelle implementiert die Sammlungsschnittstelle nicht. Es kann nur einen eindeutigen Schlüssel enthalten, kann aber doppelte Elemente enthalten. Es gibt zwei Schnittstellen, die Map in Java implementieren: Map-Schnittstelle und Sorted Map.
So deaktivieren Sie den Entwicklermodus in Android
4) Was ist der Unterschied zwischen ArrayList und Vector?
NEIN. | Anordnungsliste | Vektor |
---|---|---|
1) | ArrayList ist nicht synchronisiert. | Vektor ist synchronisiert. |
2) | ArrayList ist keine Legacy-Klasse. | Vector ist eine Legacy-Klasse. |
3) | ArrayList vergrößert seine Größe um 50 % der Array-Größe. | Vector vergrößert seine Größe durch Verdoppelung der Array-Größe. |
4) | ArrayList ist nicht „thread-sicher“ da es nicht synchronisiert ist. | Vektorliste ist „threadsicher“ da jede Methode synchronisiert ist. |
5) Was ist der Unterschied zwischen ArrayList und LinkedList?
NEIN. | Anordnungsliste | LinkedList |
---|---|---|
1) | ArrayList verwendet ein dynamisches Array. | LinkedList verwendet eine doppelt verknüpfte Liste. |
2) | ArrayList ist für die Manipulation nicht effizient, da zu viel erforderlich ist. | LinkedList ist effizient für Manipulationen. |
3) | ArrayList eignet sich besser zum Speichern und Abrufen von Daten. | LinkedList eignet sich besser zum Bearbeiten von Daten. |
4) | ArrayList bietet Direktzugriff. | LinkedList bietet keinen Direktzugriff. |
5) | ArrayList benötigt weniger Speicheraufwand, da nur Objekte gespeichert werden | LinkedList benötigt mehr Speicheraufwand, da es sowohl das Objekt als auch die Adresse dieses Objekts speichert. |
6) Was ist der Unterschied zwischen Iterator und ListIterator?
Iterator durchläuft die Elemente nur in Vorwärtsrichtung, während ListIterator die Elemente in Vorwärts- und Rückwärtsrichtung durchläuft.
NEIN. | Iterator | ListIterator |
---|---|---|
1) | Der Iterator durchläuft die Elemente nur in Vorwärtsrichtung. | ListIterator durchläuft die Elemente sowohl in Rückwärts- als auch in Vorwärtsrichtung. |
2) | Der Iterator kann in List, Set und Queue verwendet werden. | ListIterator kann nur in List verwendet werden. |
3) | Der Iterator kann beim Durchlaufen der Sammlung nur einen Entfernungsvorgang ausführen. | ListIterator kann „Hinzufügen“ ausführen. ?entfernen,? und ?set? Operation beim Durchlaufen der Sammlung. |
7) Was ist der Unterschied zwischen Iterator und Enumeration?
NEIN. | Iterator | Aufzählung |
---|---|---|
1) | Der Iterator kann Legacy- und Nicht-Legacy-Elemente durchlaufen. | Die Aufzählung kann nur Legacy-Elemente durchlaufen. |
2) | Der Iterator ist ausfallsicher. | Die Aufzählung ist nicht ausfallsicher. |
3) | Der Iterator ist langsamer als die Enumeration. | Die Aufzählung ist schneller als der Iterator. |
4) | Der Iterator kann beim Durchlaufen der Sammlung einen Entfernungsvorgang ausführen. | Die Enumeration kann nur eine Durchlaufoperation für die Sammlung ausführen. |
8) Was ist der Unterschied zwischen List und Set?
Sowohl List als auch Set erweitern die Sammlungsschnittstelle. Es gibt jedoch einige Unterschiede zwischen beiden, die unten aufgeführt sind.
- Die Liste kann doppelte Elemente enthalten, während Set eindeutige Elemente enthält.
- Die Liste ist eine geordnete Sammlung, die die Einfügereihenfolge beibehält, während Set eine ungeordnete Sammlung ist, die die Einfügereihenfolge nicht beibehält.
- Die List-Schnittstelle enthält eine einzelne Legacy-Klasse, die Vector-Klasse, während die Set-Schnittstelle keine Legacy-Klasse hat.
- Die List-Schnittstelle kann n Nullwerte zulassen, während die Set-Schnittstelle nur einen einzelnen Nullwert zulässt.
9) Was ist der Unterschied zwischen HashSet und TreeSet?
Die beiden Klassen HashSet und TreeSet implementieren die Set-Schnittstelle. Die Unterschiede zwischen den beiden sind unten aufgeführt.
- HashSet behält keine Reihenfolge bei, während TreeSet eine aufsteigende Reihenfolge beibehält.
- HashSet wird durch eine Hash-Tabelle bestimmt, während TreeSet durch eine Baumstruktur implementiert wird.
- HashSet ist schneller als TreeSet.
- HashSet wird von HashMap unterstützt, während TreeSet von TreeMap unterstützt wird.
10) Was ist der Unterschied zwischen Set und Map?
Die Unterschiede zwischen Set und Map sind unten aufgeführt.
- Set enthält nur Werte, während Map sowohl Schlüssel als auch Werte enthält.
- Set enthält eindeutige Werte, während Map eindeutige Schlüssel mit doppelten Werten enthalten kann.
- Set enthält eine einzelne Anzahl von Nullwerten, während Map einen einzelnen Nullschlüssel mit n Nullwerten enthalten kann.
11) Was ist der Unterschied zwischen HashSet und HashMap?
Die Unterschiede zwischen HashSet und HashMap sind unten aufgeführt.
- HashSet enthält nur Werte, während HashMap den Eintrag (Schlüssel, Wert) enthält. HashSet kann iteriert werden, HashMap muss jedoch in Set konvertiert werden, um iteriert zu werden.
- HashSet implementiert die Set-Schnittstelle, während HashMap die Map-Schnittstelle implementiert
- HashSet darf keinen doppelten Wert haben, wohingegen HashMap doppelte Werte mit eindeutigen Schlüsseln enthalten kann.
- HashSet enthält die einzige einzelne Anzahl von Nullwerten, während HashMap einen einzelnen Nullschlüssel mit n Anzahlen von Nullwerten enthalten kann.
12) Was ist der Unterschied zwischen HashMap und TreeMap?
Die Unterschiede zwischen HashMap und TreeMap sind unten aufgeführt.
- HashMap behält keine Reihenfolge bei, aber TreeMap behält die aufsteigende Reihenfolge bei.
- HashMap wird durch eine Hash-Tabelle implementiert, während TreeMap durch eine Baumstruktur implementiert wird.
- HashMap kann nach Schlüssel oder Wert sortiert werden, während TreeMap nach Schlüssel sortiert werden kann.
- HashMap kann einen Nullschlüssel mit mehreren Nullwerten enthalten, während TreeMap keinen Nullschlüssel enthalten kann, aber mehrere Nullwerte haben kann.
13) Was ist der Unterschied zwischen HashMap und Hashtable?
NEIN. | HashMap | Hash-tabelle |
---|---|---|
1) | HashMap ist nicht synchronisiert. | Hashtable ist synchronisiert. |
2) | HashMap kann einen Nullschlüssel und mehrere Nullwerte enthalten. | Hashtable darf keinen Nullschlüssel oder Nullwert enthalten. |
3) | HashMap ist nicht „thread-sicher“. Daher ist es für Nicht-Thread-Anwendungen nützlich. | Hashtable ist threadsicher und kann von verschiedenen Threads gemeinsam genutzt werden. |
4) | 4) HashMap erbt die AbstractMap-Klasse | Hashtable erbt die Dictionary-Klasse. |
14) Was ist der Unterschied zwischen Collection und Collections?
Die Unterschiede zwischen der Sammlung und den Sammlungen sind unten aufgeführt.
Baumdurchquerung
- Die Collection ist eine Schnittstelle, während Collections eine Klasse ist.
- Die Collection-Schnittstelle bietet die Standardfunktionalität der Datenstruktur für List, Set und Queue. Die Collections-Klasse dient jedoch dazu, die Sammlungselemente zu sortieren und zu synchronisieren.
- Die Collection-Schnittstelle stellt die Methoden bereit, die für die Datenstruktur verwendet werden können, während die Collections-Klasse die statischen Methoden bereitstellt, die für verschiedene Operationen an einer Sammlung verwendet werden können.
15) Was ist der Unterschied zwischen Comparable und Comparator?
NEIN. | Vergleichbar | Komparator |
---|---|---|
1) | Comparable bietet nur eine Art von Sequenz. | Der Komparator bietet mehrere Arten von Sequenzen. |
2) | Es stellt eine Methode namens „compareTo()“ bereit. | Es stellt eine Methode namens „compare()“ bereit. |
3) | Es befindet sich im Paket java.lang. | Es befindet sich im Paket java.util. |
4) | Wenn wir die Comparable-Schnittstelle implementieren, wird die tatsächliche Klasse geändert. | Die eigentliche Klasse wird nicht verändert. |
16) Was verstehen Sie unter BlockingQueue?
BlockingQueue ist eine Schnittstelle, die die Queue-Schnittstelle erweitert. Es sorgt für Parallelität bei Vorgängen wie Abrufen, Einfügen und Löschen. Beim Abrufen eines Elements wird darauf gewartet, dass die Warteschlange nicht leer ist. Beim Speichern der Elemente wartet es auf den verfügbaren Platz. BlockingQueue darf keine Nullelemente enthalten und die Implementierung von BlockingQueue ist threadsicher.
Syntax:
public interface BlockingQueue extends Queue
17) Was ist der Vorteil der Eigenschaftendatei?
Wenn Sie den Wert in der Eigenschaftendatei ändern, müssen Sie die Java-Klasse nicht neu kompilieren. Dadurch ist die Anwendung einfach zu verwalten. Es dient der Speicherung von Informationen, die häufig geändert werden müssen. Betrachten Sie das folgende Beispiel.
import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } }
Ausgabe
system oracle
18) Was bedeutet die Methode hashCode()?
Die Methode hashCode() gibt einen Hash-Codewert (eine Ganzzahl) zurück.
Die Methode hashCode() gibt die gleiche Ganzzahl zurück, wenn zwei Schlüssel (durch Aufruf der Methode equal()) identisch sind.
Es ist jedoch möglich, dass zwei Hash-Code-Nummern unterschiedliche oder gleiche Schlüssel haben können.
Wenn zwei Objekte mit der Methode equal() kein gleiches Ergebnis erzeugen, liefert die Methode hashcode() das unterschiedliche ganzzahlige Ergebnis für beide Objekte.
19) Warum überschreiben wir die Methode equal()?
Mit der Methode equal wird überprüft, ob zwei Objekte gleich sind oder nicht. Es muss überschrieben werden, wenn wir die Objekte anhand der Eigenschaft überprüfen möchten.
Beispiel: „Employee“ ist eine Klasse mit drei Datenelementen: ID, Name und Gehalt. Allerdings wollen wir die Gleichheit des Mitarbeitergegenstandes anhand des Gehalts prüfen. Dann müssen wir die Methode equal() überschreiben.
20) Wie synchronisiere ich Listen-, Mengen- und Kartenelemente?
Ja, die Collections-Klasse stellt Methoden bereit, um Listen-, Set- oder Kartenelemente synchronisiert zu machen:
öffentliche statische Liste synchronisiertList(List l){} |
öffentliches statisches Set synchronisiertSet(Set s){} |
öffentliches statisches SortedSet synchronisiertSortedSet(SortedSet s){} |
öffentliche statische Karte synchronisiertMap(Map m){} |
öffentliche statische SortedMap synchronisiertSortedMap(SortedMap m){} |
21) Was ist der Vorteil der generischen Sammlung?
Die Verwendung der generischen Sammlung bietet drei Hauptvorteile.
- Wenn wir die generische Klasse verwenden, ist keine Typumwandlung erforderlich.
- Es ist typsicher und wird zur Kompilierzeit überprüft.
- Generic bestätigt die Stabilität des Codes, indem es ihn zur Kompilierungszeit erkennbar macht.
22) Was ist Hash-Kollision in Hashtable und wie wird sie in Java gehandhabt?
Zwei unterschiedliche Schlüssel mit demselben Hashwert werden als Hash-Kollision bezeichnet. Um Kollisionen zu vermeiden, werden zwei separate Einträge in einem einzigen Hash-Bucket gespeichert. Es gibt zwei Möglichkeiten, eine Hash-Kollision zu vermeiden.
- Separate Verkettung
- Öffnen Sie die Adressierung
23) Was ist die Dictionary-Klasse?
Die Dictionary-Klasse bietet die Möglichkeit, Schlüssel-Wert-Paare zu speichern.
24) Was ist die Standardgröße des Ladefaktors bei der Hashing-basierten Sammlung?
Die Standardgröße des Lastfaktors beträgt 0,75 . Die Standardkapazität wird als Anfangskapazität * Auslastungsfaktor berechnet. Beispiel: 16 * 0,75 = 12. 12 ist also die Standardkapazität von Map.
25) Was verstehen Sie unter Fail-Fast?
Der Iterator in Java, der sofort eine ConcurrentmodificationException auslöst, wenn eine strukturelle Änderung auftritt, wird als Fail-Fast-Iterator bezeichnet. Der Fail-Fats-Iterator benötigt keinen zusätzlichen Speicherplatz.
26) Was ist der Unterschied zwischen Array und ArrayList?
Die Hauptunterschiede zwischen Array und ArrayList sind unten aufgeführt.
SN | Array | Anordnungsliste |
---|---|---|
1 | Das Array hat eine feste Größe, was bedeutet, dass wir die Größe des Arrays nicht nach Bedarf ändern können. | ArrayList hat nicht die feste Größe, wir können die Größe dynamisch ändern. |
2 | Arrays sind vom statischen Typ. | ArrayList hat eine dynamische Größe. |
3 | Arrays können sowohl primitive Datentypen als auch Objekte speichern. | ArrayList kann die primitiven Datentypen nicht speichern, sondern nur die Objekte. |
27) Was ist der Unterschied zwischen der Länge eines Arrays und der Größe von ArrayList?
Die Länge eines Arrays kann mithilfe der Eigenschaft „length“ ermittelt werden, während ArrayList die Eigenschaft „length“ nicht unterstützt. Wir können jedoch die Methode size() verwenden, um die Anzahl der Objekte in der Liste abzurufen.
Ermitteln der Länge des Arrays
Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length);
Ermitteln der Größe der ArrayList
ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size());
28) Wie konvertiert man ArrayList in Array und Array in ArrayList?
Wir können ein Array in eine ArrayList konvertieren, indem wir die Methode asList() der Klasse Arrays verwenden. Die Methode asList() ist die statische Methode der Arrays-Klasse und akzeptiert das List-Objekt. Betrachten Sie die folgende Syntax:
Arrays.asList(item)
Mit der toArray()-Methode der ArrayList-Klasse können wir eine ArrayList in ein Array konvertieren. Betrachten Sie die folgende Syntax, um die ArrayList in das List-Objekt zu konvertieren.
List_object.toArray(new�String[List_object.size()])
29) Wie mache ich Java ArrayList schreibgeschützt?
Wir können Java ArrayList Read-only erhalten, indem wir die Methode Collections.unmodifiableCollection() aufrufen. Wenn wir eine ArrayList als schreibgeschützt definieren, können wir keine Änderungen an der Sammlung über die Methoden „add()“, „remove()“ oder „set()“ vornehmen.
30) Wie entferne ich Duplikate aus ArrayList?
Es gibt zwei Möglichkeiten, Duplikate aus der ArrayList zu entfernen.
Der Prozess zum Entfernen doppelter Elemente aus ArrayList mithilfe des LinkedHashSet:
- Kopieren Sie alle Elemente von ArrayList nach LinkedHashSet.
- Leeren Sie die ArrayList mit der Methode clear(), wodurch alle Elemente aus der Liste entfernt werden.
- Kopieren Sie nun alle Elemente von LinkedHashset nach ArrayList.
31) Wie kann man ArrayList umkehren?
Um eine ArrayList umzukehren, können wir die Methode reverse() der Collections-Klasse verwenden. Betrachten Sie das folgende Beispiel.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Ausgabe
Zeile Autocad-Befehl
printing the list.... 10 50 30 printing list in reverse order.... 30 50 10
32) Wie sortiere ich ArrayList in absteigender Reihenfolge?
Um die ArrayList in absteigender Reihenfolge zu sortieren, können wir die Methode reverseOrder der Collections-Klasse verwenden. Betrachten Sie das folgende Beispiel.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Ausgabe
printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10
33) Wie synchronisiere ich ArrayList?
Wir können ArrayList auf zwei Arten synchronisieren.
- Verwendung der Methode Collections.synchronizedList()
- Verwenden von CopyOnWriteArrayList
3. 4) Wann werden ArrayList und LinkedList verwendet?
LinkedLists eignen sich besser für Aktualisierungsvorgänge, während ArrayLists besser für Suchvorgänge geeignet sind.