logo

Fragen und Antworten zum Java Collections-Interview

Java Collection Framework wurde eingeführt JDK 1.2 die alle Sammlungsklassen und Schnittstellen enthält. Java-Sammlung ist ein Framework, das einen Mechanismus zum Speichern und Bearbeiten der Sammlung von Objekten bereitstellt. Es ermöglicht Entwicklern den Zugriff auf vorgefertigte Datenstrukturen und Algorithmen zur Datenbearbeitung.

In diesem Artikel haben wir die Top 50 behandelt Fragen zum Vorstellungsgespräch bei Java Collections und Antworten die alles abdecken, von einfachen bis hin zu fortgeschrittenen Java-Sammlungskonzepten wie Navigationssammlung, WeakHashMap, Streams Lambdas usw. Egal, ob Sie ein frischer oder ein erfahrener Java-Entwickler , diese Java Collections-Interviewfragen geben Ihnen das nötige Selbstvertrauen, um Ihr nächstes Java-Interview zu meistern.

Fragen zum Vorstellungsgespräch bei Java Collections

Fragen zum Vorstellungsgespräch bei Java Collections



Wir haben die 50 Fragen in zwei Teile unterteilt: Erfahrene und Erstsemester. Beginnen wir mit den Fragen für Erstsemester.

Inhaltsverzeichnis

Fragen zum Java Collection-Interview für Studienanfänger

1. Was ist Sammlung in Java?

Der Begriff Sammlung bezieht sich auf eine Gruppe von Objekten, die als eine Einheit dargestellt werden. Klassen in der Klassenhierarchie der Java-Sammlung sind zweigeteilt Wurzel Schnittstellen: Sammlung (java.util.Collection) und Karte (java.util.Map) . Begriffe, die Ihnen beim Erlernen der Sammlung in Java begegnen werden:

  • Sammlungsrahmen: Das Collection Framework von Java definiert Klassen und Schnittstellen zur Darstellung von Objektgruppen als eine einzelne Einheit. C++-Entwickler können das Collection-Framework mit vergleichen STL (Standardvorlagenbibliothek) und Container Framework mit dem Collection Framework, wenn sie einen C++-Hintergrund haben.
  • Sammlungsschnittstelle: Die Schnittstelle einer Klasse gibt an, was sie tun soll, nicht wie. Mit anderen Worten: Es ist die Blaupause für die Klasse. Diese Schnittstelle stellt die gängigsten Methoden für alle Sammlungsobjekte bereit, die Teil des Collection Framework sind. Alternativ repräsentiert es das einzelne Objekt als Ganzes.
  • Sammlungsklasse: Als Mitglied des Collection Framework ist es Teil des java.util-Pakets. Das Sammlungsobjekt wird in dieser Klasse mit vielen Hilfsmethoden bereitgestellt.

2. Was ist ein Framework in Java?

Frameworks sind Sätze von Klassen Und Schnittstellen die eine fertige Architektur liefern. Es ist nicht notwendig, ein Framework zu definieren, um neue Features oder Klassen zu implementieren. Daher umfasst ein optimaler objektorientierter Entwurf ein Framework, das eine Sammlung von Klassen enthält, die alle ähnliche Aufgaben ausführen. Das Framework kann auf vielfältige Weise verwendet werden, beispielsweise durch Aufrufen seiner Methoden, Erweitern und Bereitstellen von Rückrufen, Listenern und anderen Implementierungen. Einige der beliebtesten Frameworks in Java sind:

  • Frühling
  • Überwintern
  • Streben
  • Google Web Toolkit (GWT)
  • JavaServer-Gesichter (JSF)

3. Was ist der Unterschied zwischen Array und Collection in Java?

Arrays sind eine Sammlung von Variablen ähnlichen Typs mit einem gemeinsamen Namen in Java. Es gibt einige Unterschiede zwischen Arrays in Java und C/C++. Sammlungen hingegen sind Gruppen einzelner Objekte, die eine einzige Einheit bilden, die als Sammlung von Objekten bezeichnet wird.

Arrays

Sammlung

Arrays haben eine feste Größe. Das heißt, sobald wir ein Array erstellt haben, können wir es nicht mehr entsprechend unseren Anforderungen vergrößern oder verkleinern. Die Kollektion ist wachstumsorientiert und orientiert sich an unseren Anforderungen. Wir können die Größe vergrößern oder verkleinern.
Im Hinblick auf den Speicher wird die Verwendung von Arrays nicht empfohlen. Im Hinblick auf den Speicher wird die Verwendung von Sammlungen empfohlen.
Hinsichtlich der Leistung wird der Einsatz von Arrays empfohlen. Im Hinblick auf die Leistung wird die Verwendung von Sammlungen nicht empfohlen.
Arrays können nur Elemente homogener Datentypen enthalten. Die Sammlung kann sowohl homogene als auch heterogene Elemente enthalten.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen Arrays und Sammlungen in Java

4. Welche verschiedenen Schnittstellen werden im Java Collections Framework verwendet?

Die Sammlung wird als Wurzel der Sammlungshierarchie bezeichnet. Sammlungen stellen Gruppen von Objekten dar, die als Elemente bezeichnet werden. Die Java-Plattform bietet keine direkte Implementierung dieser Schnittstelle, aber die Collection-Schnittstelle wird durch die Klassen List und Set implementiert.

  • Sammlungsschnittstelle
  • Listenschnittstelle
  • Schnittstelle einstellen
  • Warteschlangenschnittstelle
  • Dequeue-Schnittstelle
  • Kartenschnittstelle

5. Erklären Sie die Hierarchie des Collection-Frameworks in Java.

Alle vom Collection Framework benötigten Klassen und Schnittstellen sind im Utility-Paket (java. util) enthalten. Sammlungsframeworks verfügen über eine Schnittstelle, die als iterierbare Schnittstelle bezeichnet wird und es dem Iterator ermöglicht, alle Sammlungen zu durchlaufen. Zusätzlich zu dieser Schnittstelle fungiert die Hauptsammlungsschnittstelle als Root für das Sammlungsframework. Alle Sammlungen erweitern diese Sammlungsschnittstelle und erweitern damit die Eigenschaften des Iterators und die Methoden dieser Schnittstelle. Die folgende Abbildung veranschaulicht die Hierarchie des Sammlungsframeworks.

Java-Sammlungshierarchie

6. Welche Vorteile bietet das Collection Framework?

Vorteile des Collection Framework: Da das Fehlen eines Sammlungsrahmens zu den oben genannten Nachteilen führte, sind die folgenden Vorteile des Sammlungsrahmens aufgeführt.

  • Konsistente API: Die API verfügt über einen grundlegenden Satz von Schnittstellen wie Sammlung , Satz , Aufführen , oder Karte , alle Klassen (ArrayList, LinkedList, Vector usw.), die diese Schnittstellen implementieren, haben manche gemeinsame Reihe von Methoden.
  • Reduziert den Programmieraufwand: Ein Programmierer muss sich nicht um das Design der Sammlung kümmern, sondern kann sich auf deren optimale Verwendung in seinem Programm konzentrieren. Daher wurde das Grundkonzept der objektorientierten Programmierung (d. h. Abstraktion) erfolgreich implementiert.
  • Erhöht die Programmgeschwindigkeit und -qualität: Erhöht die Leistung durch die Bereitstellung leistungsstarker Implementierungen nützlicher Datenstrukturen und Algorithmen, da der Programmierer in diesem Fall nicht über die beste Implementierung einer bestimmten Datenstruktur nachdenken muss. Er kann einfach die beste Implementierung nutzen, um die Leistung seines Algorithmus/Programms drastisch zu steigern.

7. Was ist ArrayList in Java?

ArrayList ist Teil des Java-Collection-Frameworks und eine Klasse des java.util-Pakets. Es stellt uns dynamische Arrays in Java zur Verfügung. Die Hauptvorteile von ArrayList bestehen darin, dass beim Deklarieren eines Arrays die Größe angegeben werden muss. In ArrayList ist es jedoch nicht erforderlich, die Größe von ArrayList anzugeben. Wenn Sie die Größe angeben möchten, können Sie dies tun.

Anordnungsliste

Bild der Array-Liste

Weitere Informationen finden Sie im Artikel – ArrayList in Java

8. Was ist der Unterschied zwischen Collection und Collections?

Sammlung Sammlungen
Es ist eine Schnittstelle. Es handelt sich um eine Utility-Klasse.
Es wird verwendet, um eine Gruppe einzelner Objekte als eine Einheit darzustellen. Es definiert mehrere Dienstprogrammmethoden, die zum Bearbeiten der Sammlung verwendet werden.
Die Collection ist eine Schnittstelle, die seit Java8 eine statische Methode enthält. Die Schnittstelle kann auch abstrakte und Standardmethoden enthalten. Es enthält nur statische Methoden.

Weitere Informationen finden Sie im Artikel – Sammlung vs. Sammlungen in Java mit Beispiel

9. Unterschied zwischen ArrayList und LinkedList im Java Collection Framework?

ArrayList vs. LinkedList

ArrayList und LinkedList

Anordnungsliste

LinkedList

Diese Klasse verwendet ein dynamisches Array, um die darin enthaltenen Elemente zu speichern. Mit der Einführung von Generika unterstützt diese Klasse die Speicherung aller Arten von Objekten. Diese Klasse verwendet eine doppelt verknüpfte Liste, um die darin enthaltenen Elemente zu speichern. Ähnlich wie die ArrayList unterstützt auch diese Klasse die Speicherung aller Arten von Objekten.
Die Bearbeitung von ArrayList nimmt aufgrund der internen Implementierung mehr Zeit in Anspruch. Immer wenn wir ein Element entfernen, wird intern das Array durchlaufen und die Speicherbits werden verschoben. Die Bearbeitung von LinkedList nimmt im Vergleich zu ArrayList weniger Zeit in Anspruch, da es in einer doppelt verknüpften Liste kein Konzept zum Verschieben der Speicherbits gibt. Die Liste wird durchlaufen und der Referenzlink wird geändert.
Diese Klasse implementiert eine List-Schnittstelle. Daher fungiert dies als Liste. Diese Klasse implementiert sowohl die List-Schnittstelle als auch die Deque-Schnittstelle. Daher kann es als Liste und Deque fungieren.
Diese Klasse funktioniert besser, wenn die Anwendung das Speichern der Daten und den Zugriff darauf erfordert. Diese Klasse funktioniert besser, wenn die Anwendung eine Manipulation der gespeicherten Daten erfordert.

Weitere Informationen finden Sie im Artikel – ArrayList vs. LinkedList in Java

10. Was ist ein Iterator?

Javas Collection-Framework verwendet Iteratoren, um Elemente einzeln abzurufen. Dieser Iterator ist universell, da er mit jeder Art von Collection-Objekt verwendet werden kann. Mit Iterator können wir sowohl Lese- als auch Löschvorgänge durchführen. Dies ist eine verbesserte Version der Enumeration mit der Möglichkeit, Elemente zu entfernen.

Beim Aufzählen von Elementen in allen im Collection-Framework implementierten Schnittstellen, z Satz , Aufführen , Warteschlange , Worüber und allen implementierten Klassen von Map muss ein Iterator verwendet werden. Der einzige für das gesamte Sammlungsframework verfügbare Cursor ist der Iterator. Mit der Methode iterator() in der Collection-Schnittstelle können Sie ein Iteratorobjekt erstellen.

Syntax:

Iterator itr = c.  iterator  ();>

Notiz: Hier ist c ein beliebiges Collection-Objekt. itr ist vom Typ Iterator-Schnittstelle und bezieht sich auf c.

Weitere Informationen finden Sie im Artikel – Iteratoren in Java

11. Was ist der Unterschied zwischen einem Iterator und einer Enumeration?

Ein wesentlicher Unterschied zwischen Iterator und Enumeration besteht darin, dass Iteratoren über eine Methode „remove()“ verfügen, Aufzählungen hingegen nicht. Mit Iterator können wir also Objekte manipulieren, indem wir sie zu Sammlungen hinzufügen und daraus entfernen. Da die Aufzählung nur Objekte durchlaufen und abrufen kann, verhält sie sich wie eine schreibgeschützte Schnittstelle.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen Iterator und Enumeration

12. Was ist der Unterschied zwischen List und Set in Java?

Ein wesentlicher Unterschied zwischen einer Liste und einem Satz besteht darin, dass eine Liste doppelte Elemente enthalten kann, während ein Satz nur eindeutige Elemente enthält. Die Liste ist geordnet und behält die Reihenfolge des Objekts bei, dem sie hinzugefügt werden. Die Menge ist ungeordnet.

Aufführen

Satz

Die Liste ist eine indizierte Sequenz. Das Set ist eine nicht indizierte Sequenz.
Die Liste erlaubt doppelte Elemente Das Set lässt keine doppelten Elemente zu.
Auf Elemente kann über ihre Position zugegriffen werden. Der Positionszugriff auf Elemente ist nicht zulässig.
Es können mehrere Nullelemente gespeichert werden. Nullelemente können nur einmal gespeichert werden.
Listenimplementierungen sind ArrayList, LinkedList, Vector, Stack Set-Implementierungen sind HashSet, LinkedHashSet.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen Liste und Menge in Java

13. Was sind die Best Practices für das Java Collections Framework?

Im Folgenden sind einige der Best Practices für die Verwendung von Java-Sammlungen aufgeführt:

  • Programme sollten als Schnittstellen und nicht als Implementierungen geschrieben werden, damit wir die Implementierung später ändern können.
  • Verwenden Sie nach Möglichkeit Generics, um die Typsicherheit zu gewährleisten und ClassCastExceptions zu vermeiden.
  • Je nach Bedarf die geeignete Sammelart auswählen. Wenn die Größe beispielsweise fest ist, möchten wir möglicherweise ein Array anstelle einer ArrayList verwenden. Wenn wir über die Karte iterieren, sollten wir LinkedHashMap verwenden. Set ist der beste Weg, Duplikate zu vermeiden.
  • Verwenden Sie von JDK bereitgestellte unveränderliche Klassen als Schlüssel in Map, um die Implementierung von hashCode() und equal() zu vermeiden.
  • Um die Lesbarkeit des Codes zu verbessern, sollten wir isEmpty() verwenden, anstatt die Größe der Sammlung zu ermitteln und mit Null zu vergleichen.
  • Anstatt Ihre eigene Implementierung zu schreiben, verwenden Sie stattdessen die Dienstprogrammklasse „Collections“, um schreibgeschützte, synchronisierte oder leere Sammlungen abzurufen. Es verbessert die Wiederverwendung von Code und führt gleichzeitig zu größerer Stabilität.

14. Was ist eine Prioritätswarteschlange in Java?

PriorityQueues werden verwendet, um Objekte entsprechend ihrer Priorität zu verarbeiten. Warteschlangen folgen dem First-In-First-Out-Algorithmus, aber manchmal müssen die Elemente der Warteschlange entsprechend ihrer Priorität verarbeitet werden, und hier kommt PriorityQueue ins Spiel. Prioritätswarteschlangen basieren auf Prioritäts-Heaps.

Die Elemente der Prioritätswarteschlange werden entsprechend der natürlichen Reihenfolge oder durch einen Komparator geordnet, der zum Zeitpunkt der Warteschlangenerstellung bereitgestellt wird, je nachdem, welcher Konstruktor verwendet wird.

Prioritätswarteschlangen in Java

Prioritätswarteschlangen in Java

Erklärung:

public class PriorityQueue extends AbstractQueue implements Serializable where E is the type of elements held in this queue>

Die Klasse implementiert Serializable-, Iterable-, Collection- und Queue-Schnittstellen.

15. Was ist der Unterschied zwischen List, Set und Map in Java?

Aufführen

Satz

Karte

Die Listenschnittstelle erlaubt doppelte Elemente

Das Set erlaubt keine doppelten Elemente.

Die Karte lässt keine doppelten Elemente zu

Die Liste behält die Einfügungsreihenfolge bei.

Das Set behält keine Einfügereihenfolge bei.

Die Karte behält auch keine Einfügereihenfolge bei.

Wir können beliebig viele Nullwerte hinzufügen.

Aber in der Menge gibt es fast nur einen Nullwert.

Die Karte erlaubt höchstens einen einzelnen Nullschlüssel und eine beliebige Anzahl von Nullwerten.

Die Listenimplementierungsklassen sind Array List und LinkedList.

Set-Implementierungsklassen sind HashSet, LinkedHashSet und TreeSet.

Kartenimplementierungsklassen sind HashMap, HashTable, TreeMap, ConcurrentHashMap und LinkedHashMap.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen List, Set und Map in Java

16. Was ist der Unterschied zwischen Warteschlange und Stapel?

Stapel

Warteschlange

Stacks funktioniert nach dem LIFO-Prinzip, was bedeutet, dass das zuletzt eingefügte Element als erstes herausgenommen wird. Warteschlangen funktionieren nach dem FIFO-Prinzip, was bedeutet, dass das zuerst eingefügte Element auch das erste Element ist, das entnommen wird.
In Stapeln erfolgen Einfügungen und Löschungen nur von oben. In Warteschlangen erfolgt das Einfügen am Ende der Liste und das Löschen am Anfang der Liste.
Der Einfügevorgang wird als Push-Vorgang bezeichnet. Der Einfügevorgang wird als Enqueue-Vorgang bezeichnet.
Der Löschvorgang wird als Pop-Vorgang bezeichnet. Der Löschvorgang wird als Vorgang zum Entfernen aus der Warteschlange bezeichnet.
Die Oberseite eines Stapels zeigt immer auf das letzte Element in der Liste, das der einzige Zeiger ist, der für den Zugriff auf die Liste verwendet wird. Für den Zugriff auf Warteschlangen werden zwei Zeiger verwaltet. Der vordere Zeiger zeigt auf das erste eingefügte Element und der hintere Zeiger auf das zuletzt eingefügte Element.

17. Was ist BlockingQueue in Java?

Die BlockingQueue-Schnittstelle in Java wurde in Java 1.5 zusammen mit verschiedenen anderen gleichzeitigen Utility-Klassen wie ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList usw. hinzugefügt. Die BlockingQueue-Schnittstelle unterstützt die Flusskontrolle (zusätzlich zur Warteschlange), indem sie eine Blockierung einführt, wenn eine BlockingQueue voll oder leer ist.

Ein Thread, der versucht, ein Element in eine volle Warteschlange einzureihen, wird blockiert, bis ein anderer Thread Platz in der Warteschlange schafft, indem er entweder ein oder mehrere Elemente aus der Warteschlange entfernt oder die Warteschlange vollständig löscht. Ebenso blockiert es einen Thread, der versucht, aus einer leeren Warteschlange zu löschen, bis andere Threads ein Element einfügen. BlockingQueue akzeptiert keinen Nullwert. Wenn wir versuchen, das Nullelement in die Warteschlange einzureihen, wird eine NullPointerException ausgelöst.

Verwendung von BlockingQueue

Blockierungswarteschlange in Java

Blockierungswarteschlange in Java

Die Hierarchie von BlockingQueue

Hierarchie der Blockierungswarteschlange in Java

Hierarchie der Blockierungswarteschlange in Java

Erklärung:

public interface BlockingQueue extends Queue>

Hier, UND ist der Typ der in der Sammlung gespeicherten Elemente.

Weitere Informationen finden Sie im Artikel – BlockingQueue-Schnittstelle in Java

18. Was ist der hashCode()?

Bild zur Veranschaulichung des Java-Hash-Codes

Bild zur Veranschaulichung des Java-Hash-Codes

Die Methode hashCode() gibt den Hashcode-Wert als Ganzzahl zurück. Es ist in der Java-Objektklasse definiert, die die Hashwerte bestimmter Eingabeobjekte berechnet. Der Hashcode-Wert wird hauptsächlich in Hashing-basierten Sammlungen wie HashMap, HashSet, HashTable usw. verwendet. Diese Methode muss in jeder Klasse überschrieben werden, die die Methode equal() überschreibt.

Syntax :

public int hashCode() // This method returns the hash code value // for the object on which this method is invoked.>

Weitere Informationen finden Sie im Artikel – Methoden equal() und hashCode() in Java

19. Unterscheiden Sie zwischen ArrayList und Vector im Java Collection Framework.

In Sammlungsinterviews wird diese Frage häufig gestellt; Vector ist jedoch synchronisiert, ArrayList hingegen nicht. ArrayList ist schneller als Vector. Die Array-Größe von ArrayList wird bei Bedarf um 50 % erhöht, während die Kapazität von Vector bei Bedarf verdoppelt wird.

Array-Liste vs. Vektor in Java

Array-Liste vs. Vektor in Java

Anordnungsliste

Vektor

ArrayList ist nicht synchronisiert Der Vektor ist synchronisiert.
Die Größe von ArrayList wird um bis zu 50 % der aktuellen Array-Größe erhöht, wenn die Anzahl der Elemente die Kapazität überschreitet. Die Größe von ArrayList wird um bis zu 100 % der aktuellen Array-Größe erhöht, wenn die Anzahl der Elemente die Kapazität überschreitet.
ArrayList ist schnell, weil es nicht synchronisiert ist. Vector ist langsamer, weil es synchronisiert ist.
Die Iteratorschnittstelle wird zum Durchlaufen der Elemente verwendet Zum Durchlaufen des Vektors kann eine Iteratorschnittstelle oder eine Enumeration verwendet werden.

Weitere Informationen finden Sie im Artikel – Vektor vs. ArrayList in Java

20. Unterscheiden Sie zwischen Iterator und ListIterator.

Iterator

ListIterator

Kann in der Sammlung vorhandene Elemente nur in Vorwärtsrichtung durchlaufen. Kann in der Sammlung vorhandene Elemente sowohl in Vorwärts- als auch in Rückwärtsrichtung durchlaufen.
Hilft beim Durchqueren von Karte, Liste und Satz. Kann nur List durchqueren, die anderen beiden nicht.
Mit Iterator können keine Indizes abgerufen werden. Es verfügt über Methoden wie nextIndex() und previousIndex(), um beim Durchlaufen der Liste jederzeit Indizes von Elementen abzurufen.
In der Sammlung vorhandene Elemente können nicht geändert oder ersetzt werden Mit Hilfe von set(E e) können wir Elemente modifizieren oder ersetzen.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen einem Iterator und einem ListIterator

21. Was ist der Unterschied zwischen einem Iterator und einer Enumeration?

Iterator: Es ist ein universeller Iterator, da wir ihn auf jedes Collection-Objekt anwenden können. Mithilfe eines Iterators können wir sowohl Lese- als auch Entfernungsvorgänge ausführen.

Syntax:

// Here 'c' is any Collection object. itr is of // type Iterator interface and refers to 'c' Iterator itr = c.iterator();>

Aufzählung: Enumeration (oder Enumeration) ist ein benutzerdefinierter Datentyp. Es wird hauptsächlich verwendet, um Integralkonstanten Namen zuzuweisen. Die Namen machen ein Programm einfach zu lesen und zu warten.

Syntax:

// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }>

Iterator

Aufzählung

Der Iterator ist ein universeller Cursor, da er auf alle Sammlungsklassen anwendbar ist. Die Aufzählung ist kein universeller Cursor, da sie nur für Legacy-Klassen gilt.
Der Iterator verfügt über die Methode „remove()“. Die Aufzählung verfügt nicht über die Methode „remove()“.
Der Iterator kann Änderungen vornehmen (z. B. mithilfe der Methode „remove()“, die das Element während des Durchlaufs aus der Sammlung entfernt). Die Aufzählungsschnittstelle fungiert als schreibgeschützte Schnittstelle. Beim Durchlaufen der Elemente der Sammlung können keine Änderungen an der Sammlung vorgenommen werden.
Iterator ist keine Legacy-Schnittstelle. Iterator kann zum Durchlaufen von HashMap, LinkedList, ArrayList, HashSet, TreeMap und TreeSet verwendet werden. Enumeration ist eine Legacy-Schnittstelle, die zum Durchlaufen von Vector und Hashtable verwendet wird.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen Iterator und Enumeration

22. Was sind die Funktionen von Java Hashmap?

HashMap ähnelt HashTable, ist jedoch nicht synchronisiert. Es erlaubt uns auch, die Nullschlüssel zu speichern, aber es sollte nur ein Nullschlüsselobjekt geben und es kann eine beliebige Anzahl von Nullwerten geben. Diese Klasse gibt keine Garantien hinsichtlich der Reihenfolge der Karte. Um diese Klasse und ihre Methoden verwenden zu können, müssen Sie sie importieren java.util. HashMap Paket oder seine Superklasse.

HashMap in Java

HashMap in Java

Syntax:

  public class   HashMap   extends   AbstractMap   implements   Map, Cloneable, Serializable>

Parameter: Es werden zwei Parameter benötigt, und zwar wie folgt:

  • Die Art der von dieser Karte verwalteten Schlüssel (K)
  • Die Art der zugeordneten Werte (V)

Weitere Informationen finden Sie im Artikel – HashMap in Java mit Beispielen

23. Was sind Sammlungsschnittstellen?

Der Sammlung Die Schnittstelle ist Mitglied des Java Collections Framework. Es ist ein Teil von java.util Paket. Es ist eine der Stammschnittstellen der Sammlungshierarchie. Die Collection-Schnittstelle wird von keiner Klasse direkt implementiert. Es wird jedoch indirekt über seine Untertypen oder Unterschnittstellen wie List, Queue und Set implementiert.

Zum Beispiel, Die HashSet-Klasse implementiert die Set-Schnittstelle, die eine Unterschnittstelle der Collection-Schnittstelle ist. Wenn eine Sammlungsimplementierung einen bestimmten Vorgang nicht implementiert, sollte sie die entsprechende Methode zum Auslösen einer UnsupportedOperationException definieren.

Die Hierarchie der Sammlung:

Sammlungsschnittstelle in Java

Sammlungsschnittstelle in Java

24. Erklären Sie die Listenschnittstelle.

Klassenschnittstelle in Java

Klassenschnittstelle in Java

In Java ermöglicht die List-Schnittstelle dem Benutzer, eine geordnete Sammlung von Objekten zu speichern. Die Liste ist die untergeordnete Schnittstelle von Collection. In Collection ist eine Liste eine geordnete Sammlung von Objekten, die doppelte Werte haben können. Da List die Einfügereihenfolge beibehält, ermöglicht es den Positionszugriff und das Einfügen, wodurch auch doppelte Werte möglich sind.

Syntax:

public interface List extends Collection ;>

Diese Listenschnittstelle wird von verschiedenen Klassen wie ArrayList, Vector, Stack usw. implementiert. Da alle Unterklassen die Liste implementieren, können wir mit jeder dieser Klassen ein Listenobjekt instanziieren.

Beispiel:

List al = new ArrayList ();
List ll = new LinkedList ();
Liste v = neuer Vektor ();

Wobei T der Typ des Objekts ist

Array-Liste in Java

Array-Liste in Java

Die Klassen, die die List-Schnittstelle implementieren, sind wie folgt:

  • Anordnungsliste
  • LinkedList
  • Vektor
  • Stapel

25. Schreiben Sie ein Programm, um ein bestimmtes Array mit der Methode asList() in eine Sammlung umzuwandeln.

Um arraybasierte Daten in sammlungsbasierte Daten umzuwandeln, können wir verwenden java.util.Arrays Klasse. Diese Klasse stellt eine statische Methode asList(T… a) bereit, die das Array in eine Sammlung konvertiert.

Java




// Convert an Array into Collection in Java> // import java util library> import> java.util.*;> > // class for writing logic of the problem> public> class> ArrayToCollection {> >public> static> void> main(String args[])> >{> >// array input> >String students[] = {>'Kamlesh'>,>'Abhay'>,> >'Abhishek'>,>'Shivansh'> };> > >// printing input elements for comparison> >System.out.println(>'Array input: '> >+ Arrays.toString(students));> > >// converting array into Collection> >// with asList() function> >List studentList = Arrays.asList(students);> > >// print converted elements> >System.out.println(>'Converted elements: '> >+ studentList);> >}> }>

>

>

Ausgabe

Array input: [Kamlesh, Abhay, Abhishek, Shivansh] Converted elements: [Kamlesh, Abhay, Abhishek, Shivansh]>

26. Unterscheiden Sie zwischen HashSet und HashMap

HashSet

HashMap

HashSet implementiert die Set-Schnittstelle HashMap implementiert die Map-Schnittstelle
Es sind keine Duplikate zulässig Ja, doppelte Werte sind zulässig, aber kein doppelter Schlüssel
Dummy-Werte sind in HashSet zulässig. In HashMap sind keine Dummy-Werte zulässig.
Während eines Add-Vorgangs ist ein einzelnes Objekt erforderlich Während eines Add-Vorgangs sind 2 Objekte erforderlich
Die Geschwindigkeit ist vergleichsweise langsamer als bei HashMap Die Geschwindigkeit ist vergleichsweise höher als bei HashSet, da hier die Hashing-Technik verwendet wurde.
Einen einzelnen Nullwert haben Einzelner Nullschlüssel und eine beliebige Anzahl von Nullwerten
Zum Einfügen wird die Add()-Methode verwendet Zum Einfügen wird die Methode put() verwendet.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen HashMap und HashSet

27. Unterscheiden Sie zwischen HashSet und HashTable.

HashSet

Hash-tabelle

HashSet erlaubt NULL-Elemente HashTable erlaubt keine NULL-Elemente.

Es kann nicht garantiert werden, dass Objekte, die Sie in HashSet einfügen, in derselben Reihenfolge eingefügt werden. Objekte werden basierend auf ihrem Hash-Code eingefügt. LinkedHashSet kann zur Aufrechterhaltung der Ordnung verwendet werden.

HashTable behält die Einfügereihenfolge nicht bei.
HashSet ist nicht synchronisiert, kann aber extern synchronisiert werden. HashTable ist synchronisiert.
Die Methode add() wird zum Einfügen in HashSet verwendet Die Methode put() wird zum Einfügen in HashTable verwendet

28. Wie groß ist der Ladefaktor standardmäßig in der Hashing-basierten Sammlung?

Wenn der Lastfaktor zunimmt, erhöht sich die Kapazität, sodass die Betriebskomplexität der HashMap O(1) bleibt, wenn das Verhältnis des aktuellen Elements zur anfänglichen Kapazität den Schwellenwert überschreitet. Die Bedeutung der betrieblichen Komplexität von O(1) bedeutet, dass die Abruf- und Einfügevorgänge eine konstante Zeit in Anspruch nehmen. Die Standardgröße des Lastfaktors beträgt 0,75 . Die Standardkapazität wird durch Multiplikation der Anfangskapazität mit dem Auslastungsfaktor berechnet.

Weitere Informationen finden Sie im Artikel – Ladefaktor in HashMap in Java mit Beispielen

Fragen zum Java Collection-Interview für Erfahrene

29. Was ist der Unterschied zwischen Comparable und Comparator in Java?

Java bietet zwei Schnittstellen zum Sortieren von Objekten mithilfe von Datenmitgliedern der Klasse:

  • Vergleichbar
  • Komparator

Vergleichbar

Komparator

Die Comparable-Schnittstelle bietet eine einzelne Sortierreihenfolge. Die Comparator-Schnittstelle bietet mehrere Sortiersequenzen.
Die eigentliche Klasse wird durch eine vergleichbare Schnittstelle modifiziert Die eigentliche Klasse wird durch die Comparator-Schnittstelle nicht verändert.
Die Methode „compareTo()“ wird zum Sortieren von Elementen verwendet. Die Methode Compare() wird zum Sortieren von Elementen verwendet.
Comparable ist im Paket java.lang vorhanden Comparator ist im Paket java.util enthalten

Weitere Informationen finden Sie im Artikel – Vergleichbar mit Komparator in Java

30. Was ist der Unterschied zwischen Fail-Fast und Fail-Safe?

Iteratoren in Java werden zum Durchlaufen der Collection-Objekte verwendet. Fail-Fast-Iteratoren lösen sofort aus ConcurrentModificationException Wenn da ein ... ist bauliche Veränderung der Sammlung. Strukturelle Änderung bedeutet das Hinzufügen oder Entfernen eines Elements aus einer Sammlung, während ein Thread diese Sammlung durchläuft. Iteratoren für die Klassen ArrayList und HashMap sind einige Beispiele für ausfallsichere Iteratoren.

Ausfallschnell Ausfallsicher
ConcurrentModificationException wird ausgelöst, während das Objekt während des Iterationsprozesses geändert wird. Es wird keine Ausnahme ausgelöst
Fail-Fast benötigt während des Prozesses weniger Speicher. Der ausfallsichere Iterator benötigt während des Prozesses mehr Speicher.
Während des Iterationsprozesses wird kein Klonobjekt erstellt. Während des Iterationsprozesses wird ein Klonobjekt oder eine Kopie erstellt.
Fail-Fast erlaubt keine Änderungen während des Iterationsprozesses. Fail-Safe ermöglicht Änderungen während des Iterationsprozesses.
Fail-Fast ist schnell, Fail-Safe ist etwas langsamer als Fail-Fast.

Beispiele:

ArrayList, Vector, HashMap, HashSet usw.

Beispiele:

ConcurrentHashMap, CopyOnWriteArrayList usw.

Weitere Informationen finden Sie im Artikel – Fail-Fast- und Fail-Safe-Iteratoren in Java

31. Schreiben Sie ein Programm, um die Liste mithilfe des Lambda-Ausdrucks zu iterieren.

Die Iteration kann mit a erfolgen Lambda-Ausdruck.

Syntax:

list_name.forEach(variable->{//Codeblock})>

Java




// Java Program to iterate over a List> // using forEach()> > // Importing all classes of> // java.util method> import> java.util.*;> > // Class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an ArrayList> >List l =>new> ArrayList();> > >// Adding elements to the List> >// Custom inputs> >l.add(>'Geeks'>);> >l.add(>'for'>);> >l.add(>'Geeks'>);> > >// Lambda expression printing all elements in a List> >l.forEach((temp) ->{ System.out.println(temp); });> >}> }>

>

>

Ausgabe

Geeks for Geeks>

Weitere Informationen finden Sie im Artikel – Durch die Liste in Java iterieren

32. Was ist IdentityHashMap?

Die IdentityHashMap implementiert die Map-Schnittstelle mithilfe von Hashtable und vergleicht Schlüssel (und Werte) mithilfe von Referenzgleichheit anstelle von Objektgleichheit. Diese Klasse implementiert die Map-Schnittstelle, bricht jedoch absichtlich den allgemeinen Vertrag von Map, der erfordert, dass Objekte mit der Methode equal() verglichen werden. Diese Klasse wird verwendet, wenn der Benutzer den Vergleich von Objekten mithilfe von Referenzen ermöglicht. Es gehört zum Paket java.util.

Weitere Informationen finden Sie im Artikel – IdentityHashMap-Klasse in Java

33. Schreiben Sie ein Programm in Java, um den Inhalt einer HashTable mithilfe einer Aufzählung anzuzeigen.

Die Hashtable-Klasse implementiert eine Hash-Tabelle, die Schlüssel Werten zuordnet. Jedes Nicht-Null-Objekt kann als Schlüssel oder als Wert verwendet werden. Um Objekte erfolgreich in einer Hashtabelle zu speichern und abzurufen, müssen die als Schlüssel verwendeten Objekte die Methode hashCode und die Methode equal implementieren. Unten finden Sie das Programm zum Anzeigen des Inhalts einer HashTable mithilfe einer Aufzählung:

Java




// Java Program to Demonstrate Getting Values> // as an Enumeration of Hashtable class> > import> java.io.*;> import> java.util.Enumeration;> import> java.util.Hashtable;> > // Main class> // EnumerationOnKeys> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating an empty hashtable> >Hashtable hash> >=>new> Hashtable();> > >// Inserting key-value pairs into hash table> >// using put() method> >hash.put(>1>,>'Geeks'>);> >hash.put(>2>,>'for'>);> >hash.put(>3>,>'Geeks'>);> > >// Now creating an Enumeration object> >// to read elements> >Enumeration e = hash.elements();> > >// Condition holds true till there is> >// single key remaining> > >// Printing elements of hashtable> >// using enumeration> >while> (e.hasMoreElements()) {> > >// Printing the current element> >System.out.println(e.nextElement());> >}> >}> }>

>

>

Ausgabe

Geeks for Geeks>

34. Schreiben Sie ein Programm in Java, um die Sammlungsansicht der in einer HashMap vorhandenen Werte zu erhalten.

Die HashMap-Klasse von Java verfügt über die Methode java.util.HashMap.values() zum Erstellen von Sammlungen aus HashMap-Werten. Es gibt im Grunde eine Sammlungsansicht der HashMap-Werte zurück.

Java




// Java code to illustrate the values() method> import> java.util.*;> > public> class> Hash_Map_Demo {> >public> static> void> main(String[] args)> >{> > >// Creating an empty HashMap> >HashMap hash_map> >=>new> HashMap();> > >// Mapping string values to int keys> >hash_map.put(>0>,>'Welcome'>);> >hash_map.put(>1>,>'to'>);> >hash_map.put(>2>,>'Geeks'>);> >hash_map.put(>3>,>'4'>);> >hash_map.put(>4>,>'Geeks'>);> > >// Displaying the HashMap> >System.out.println(>'Initial Mappings are: '> >+ hash_map);> > >// Using values() to get the set view of values> >System.out.println(>'The collection is: '> >+ hash_map.values());> >}> }>

>

>

Ausgabe

Initial Mappings are: {0=Welcome, 1=to, 2=Geeks, 3=4, 4=Geeks} The collection is: [Welcome, to, Geeks, 4, Geeks]>

Weitere Informationen finden Sie im Artikel – HashMap-Werte()-Methode in Java

35. Schreiben Sie ein Programm, um zwei ArrayList zu einer einzigen ArrayList zusammenzufügen.

Angesichts zweier ArrayLists in Java besteht unsere Aufgabe darin, diese ArrayLists zu verbinden.

Java




// Java program to demonstrate> // How to join ArrayList> > import> java.util.*;> > public> class> GFG {> >public> static> void> main(String args[])> >{> > >ArrayList list_1 =>new> ArrayList();> > >list_1.add(>'Geeks'>);> >list_1.add(>'For'>);> >list_1.add(>'ForGeeks'>);> > >// Print the ArrayList 1> >System.out.println(>'ArrayList 1: '> + list_1);> > >ArrayList list_2 =>new> ArrayList();> > >list_2.add(>'GeeksForGeeks'>);> >list_2.add(>'A computer portal'>);> > >// Displaying the ArrayList 2> >System.out.println(>'ArrayList 2: '> + list_2);> > >// using Collection.addAll() method to join two> >// arraylist> >list_1.addAll(list_2);> > >// Print the joined ArrayList> >System.out.println(>'Joined ArrayLists: '> + list_1);> >}> }>

>

>

Ausgabe

ArrayList 1: [Geeks, For, ForGeeks] ArrayList 2: [GeeksForGeeks, A computer portal] Joined ArrayLists: [Geeks, For, ForGeeks, GeeksForGeeks, A computer portal]>

Weitere Informationen finden Sie im Artikel – Verknüpfen Sie zwei ArrayLists in Java

36. Wie kann man eine ArrayList in Java synchronisieren?

Mit der Methode Collections.synchronizedList() können wir unsere Sammlungen in Java synchronisieren. SynchronizedList() gibt eine synchronisierte (threadsichere) Liste zurück, die durch eine Auswahl unterstützt wird.

Java




// Java program to show synchronization of ArrayList> import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Non Synchronized ArrayList> >List list =>new> ArrayList();> > >list.add(>'Eat'>);> >list.add(>'Coffee'>);> >list.add(>'Code'>);> >list.add(>'Sleep'>);> >list.add(>'Repeat'>);> > >// Synchronizing ArrayList in Java> >list = Collections.synchronizedList(list);> > >// we must use synchronize block to avoid> >// non-deterministic behavior> >synchronized> (list)> >{> >Iterator it = list.iterator();> >while> (it.hasNext()) {> >System.out.println(it.next());> >}> >}> >}> }>

>

>

Ausgabe

Eat Coffee Code Sleep Repeat>

37. Was ist eine Properties-Klasse in Java?

Die Properties-Klasse ist eine Unterklasse von Hashtable. Die Eigenschaftenklasse speichert eine Liste von Werten, deren Schlüssel eine Zeichenfolge ist und deren Wert ebenfalls eine Zeichenfolge ist. Eigenschaften können andere Eigenschaftenklassenlisten definieren, die Standardeinstellung ist jedoch Eigenschaften.

Merkmale der Properties-Klasse:

  • Property ist eine Unterklasse von Hashtable.
  • Die Eigenschaftendatei wird zum Speichern und Abrufen des Zeichenfolgendatentyps für eine Werteliste verwendet, wobei der Schlüssel eine Zeichenfolge und der Wert ebenfalls eine Zeichenfolge ist.
  • Wenn die ursprüngliche Eigenschaftenliste eine bestimmte Schlüsseleigenschaft nicht enthält, wird stattdessen die Standardeigenschaftenliste durchsucht.
  • Objekte können von mehreren Threads ohne externe Synchronisierung gemeinsam genutzt werden.
  • Mit der Properties-Klasse können die Eigenschaften des Systems abgerufen werden.

Weitere Informationen finden Sie im Artikel – Properties-Klasse in Java

38. Was passiert, wenn Sie HashMap in einer Multithread-Java-Anwendung verwenden?

Wenn in einer Multithread-Umgebung mehrere Threads die Karte strukturell ändern, z. B. Zuordnungen hinzufügen, entfernen oder ändern, kann die interne Datenstruktur von HashMap beschädigt werden und es können einige fehlende Links, falsche Einträge und die Karte selbst vorhanden sein völlig nutzlos werden. Daher sollten Sie HashMap nicht in einer gleichzeitigen Anwendung verwenden; Verwenden Sie stattdessen ConcurrentHashMap oder Hashtable, was threadsicher ist. Die ConcurrentHashMap umfasst alle Methoden der Hashtable sowie vollständige Parallelität von Abrufen und Aktualisierungen.

Wie wurde ThreadSafeConcurrentHashMap threadsicher?

  • Die Klasse java.util.Concurrent.ConcurrentHashMap bietet Thread-Sicherheit, indem sie die Karte in Segmente unterteilt, wodurch die Sperre nur einmal pro Segment, d. h. einmal für jeden Thread, vorgenommen werden kann.
  • Für den Lesevorgang in ConcurrentHashMap ist keine Sperre erforderlich.

Weitere Informationen finden Sie im Artikel – Wie erreicht ConcurrentHashMap Thread-Sicherheit in Java?

39. Was passiert, wenn zwei verschiedene Schlüssel von HashMap denselben Hashcode() zurückgeben?

Wenn zwei verschiedene Schlüssel von HashMap denselben Hash-Code zurückgeben, landen sie im selben Bucket. Daher kommt es zu Kollisionen. Im Falle einer Kollision, d. h. der Index von zwei oder mehr Knoten ist derselbe, werden die Knoten durch eine Linkliste verbunden, d. h. der zweite Knoten wird vom ersten Knoten referenziert und der dritte vom zweiten Knoten und so weiter.

Weitere Informationen finden Sie im Artikel – Interne Funktionsweise von HashMap in Java

40. Was ist WeakHashMap?

WeakHashMap implementiert die Map-Schnittstelle. Im Gegensatz zu HashMap ermöglicht WeakHashMap die Speicherbereinigung auch dann, wenn das als Schlüssel angegebene Objekt keine Referenzen enthält, obwohl es mit WeakHashMap verknüpft ist. Mit anderen Worten: Garbage Collector ist besser als WeakHashMap.

Weitere Informationen finden Sie im Artikel – Hashmap vs. WeakHashMap in Java

41. Was ist UnsupportedOperationException?

Im Kontext von APIs oder Listenimplementierungen ist die UnsupportedOperationException eine häufige Ausnahme. Die Ausnahme wird ausgelöst, wenn der angeforderte Vorgang nicht ausgeführt werden kann. Diese Klasse ist Mitglied des Java Collections Framework.

Syntax:

public class UnsupportedOperationException extends RuntimeException>

Weitere Informationen finden Sie im Artikel – UnsupportedOperationException

42. Wie mache ich eine Sammlung in Java schreibgeschützt?

Beim Erstellen einer schreibgeschützten Sammlung muss das Objekt darauf beschränkt werden, nur die Daten abzurufen und keine Daten hinzuzufügen oder zu entfernen. Java verfügt über verschiedene Methoden für verschiedene Sammlungstypen wie unmodifiableCollection(), unmodifiableMap(), ununmodifiableSet() usw. java.util. Die Collections-Klasse definiert alle Methoden. Die unmodifiableCollection()-Methode erstellt eine schreibgeschützte Sammlung. Es erfordert einen Verweis auf die Collection-Klasse. Wenn wir ein Objekt von Set Interface haben, können wir es verwenden ununmodifiableSet() schreibgeschützt machen.

Weitere Informationen finden Sie im Artikel – Wie mache ich eine Sammlung in Java schreibgeschützt?

43. Unterschied zwischen PriorityQueue und TreeSet in Java?

Prioritätswarteschlange

TreeSet

PriorityQueue ist in JDK 1.5 verfügbar. TreeSet kommt in JDK 1.4.
Die von PriorityQueue verwendete Datenstruktur ist Queue Die von TreeSet verwendete Datenstruktur ist Set.
Doppelte Elemente sind zulässig. Doppelte Elemente sind nicht zulässig.
Mit Ausnahme des Stammelements folgen die übrigen Elemente keiner bestimmten Reihenfolge in PriorityQueue. In TreeSet bleiben alle Elemente in der sortierten Reihenfolge.
Mit PriorityQueue können wir das größte oder kleinste Element in O(1)-Zeit abrufen. TreeSet bietet keine Möglichkeit, das größte oder kleinste Element in O(1)-Zeit abzurufen, aber da sie in sortierter Reihenfolge vorliegen, ruft es das erste oder letzte Element in O(1)-Zeit ab.

Weitere Informationen finden Sie im Artikel – Unterschied zwischen PriorityQueue und TreeSet

44. Was ist der Diamantoperator in Java?

Diamantoperatoren werden verwendet, um die Verwendung von Generika beim Erstellen von Objekten zu vereinfachen und gleichzeitig ungeprüfte Warnungen in einem Programm zu vermeiden. Als der Diamond-Operator in Java 7 eingeführt wurde, können wir das Objekt erstellen, ohne den generischen Typ auf der rechten Seite des Ausdrucks zu erwähnen, wie unten gezeigt.

Syntax:

List list = new ArrayList();>

Weitere Informationen finden Sie im Artikel – Diamantbetreiber

45. Wie funktioniert TreeMap in Java?

TreeMap speichert die Schlüssel-Wert-Paare, aber TreeMap sortiert die Schlüssel aufsteigend und nicht absteigend wie HashMap. Je nachdem, welcher Konstruktor verwendet wird, wird TreeMap entweder nach seinen Schlüsseln oder nach einem Komparator sortiert. In TreeMap werden die Elemente basierend auf einem Rot-Schwarz-Baum sortiert. Ein Rot-Schwarz-Baum ist ein selbstausgleichender binärer Suchbaum, bei dem jeder Knoten ein zusätzliches Bit hat und dieses Bit oft als Farbe (rot oder schwarz) interpretiert wird. Diese Farben werden verwendet, um sicherzustellen, dass der Baum beim Einfügen und Löschen im Gleichgewicht bleibt.

Struktur eines Knotens in Java

Struktur eines Knotens in Java

Weitere Informationen finden Sie im Artikel – Interne Funktionsweise von TreeMap in Java

46. ​​Möglichkeiten zur Iteration über Map in Java auflisten?

Die HashMap-Klasse stellt die Map-Schnittstelle von Java bereit, indem sie Daten in (Schlüssel-, Wert-)Paaren speichert und über einen Index eines anderen Typs auf sie zugreift. Um diese Klasse verwenden zu können, ist ein Import erforderlich java.util.HashMap Paket oder seine Superklasse.

Es gibt zahlreiche Möglichkeiten, über HashMap zu iterieren, von denen 5 unten aufgeführt sind:

  1. Durchlaufen Sie ein HashMap EntrySet mithilfe von Iteratoren.
  2. Iterieren Sie HashMap KeySet mit Iterator.
  3. Iterieren Sie HashMap mithilfe der for-each-Schleife.
  4. Durchlaufen einer HashMap mithilfe von Lambda-Ausdrücken.
  5. Durchlaufen Sie eine HashMap mithilfe der Stream-API.

Weitere Informationen finden Sie im Artikel – So iterieren Sie HashMap in Java

47. Was ist CopyOnWriteArrayList in Java?

CopyOnWriteArrayList in Java

CopyOnWriteArrayList in Java

Mit JDK 1.5 wurde eine erweiterte Version von ArrayList namens CopyOnWriteArrayList eingeführt, bei der alle Änderungen (Hinzufügen, Festlegen, Entfernen usw.) durch eine neue Kopie implementiert werden. Es ist in java.util.concurrent zu finden. Es handelt sich um eine Datenstruktur, die für die Verwendung in einer gleichzeitigen Umgebung erstellt wurde. In einer Thread-basierten Umgebung ist die CopyOnWriteArrayList für häufiges Lesen und seltenes Aktualisieren vorgesehen. CopyOnWriteArrayList ist eine Thread-sichere Version von ArrayList.

Weitere Informationen finden Sie im Artikel – CopyOnWriteArrayList in Java

48. Was ist EnumMap in Java?

EnumMap ist eine Implementierung der Map-Schnittstelle speziell für Aufzählungstypen. Die EnumMap-Klasse ist Mitglied des Java Collections Framework und wird nicht synchronisiert. Es erweitert AbstractMap und implementiert die Map-Schnittstelle in Java. EnumMap gehört zum Paket java.util.

Syntax:

öffentliche Klasse EnumMaperweitert AbstractMap implementiert Serialisierbar, Klonbar

// K muss Enum erweitern, was die Anforderung erzwingt, dass die Schlüssel vom angegebenen Enum-Typ sein müssen.

Parameter:

  • Schlüsselobjekttyp
  • Wertobjekttyp
EnumMap in Java

EnumMap in Java

Ersetzen Sie alle Java

Weitere Informationen finden Sie im Artikel – EnumMap-Klasse in Java

49. Wie funktioniert Hashmap intern?

HashMap funktioniert nach dem Hashing-Prinzip. HashMap enthält ein Array von Knoten, und Knoten kann eine Klasse mit den folgenden Objekten darstellen:

  • int-Hash
  • K-Taste
  • V-Wert
  • Knoten als nächstes

Die interne Funktionsweise von HashMap:

  • Hashing
  • Eimer
  • Indexberechnung in Hashmap

Weitere Informationen finden Sie im Artikel – Interne Funktionsweise von HashMap in Java

fünfzig. Warum gilt der Iterator in der Hashmap als ausfallsicher?

Fail-Fast-Iteratoren lösen sofort Ausnahmen für gleichzeitige Änderungen aus, wenn ein Thread von außerhalb versucht, die Sammlung zu ändern, auf der sie iterieren. Die Fail-Fast-Funktion stellt sicher, dass der Iterator sofort fehlschlägt, wenn er erkennt, dass eine Änderung der Sammlung in Zukunft zu anomalem Verhalten führen wird.

Schnell scheitern Die Funktion stellt sicher, dass der Iterator sofort fehlschlägt, wenn er der Meinung ist, dass eine Änderung der Sammlung zu irgendeinem Zeitpunkt in der Zukunft zu anomalem Verhalten führen würde.

Beispiel:

Java




// Java code to demonstrate remove> // case in Fail-fast iterators> > import> java.io.*;> import> java.util.ArrayList;> import> java.util.Iterator;> > public> class> GFG {> >public> static> void> main(String[] args)> >{> >ArrayList arr =>new> ArrayList();> >arr.add(>1>);> >arr.add(>2>);> >arr.add(>3>);> >arr.add(>4>);> >arr.add(>5>);> > >Iterator it = arr.iterator();> >while> (it.hasNext()) {> >if> (it.next() ==>2>) {> >// will not throw Exception> >it.remove();> >}> >}> > >System.out.println(arr);> > >it = arr.iterator();> >while> (it.hasNext()) {> >if> (it.next() ==>3>) {> >// will throw Exception on> >// next call of next() method> >arr.remove(>3>);> >}> >}> >}> }>

>

>

Ausgabe:

[1, 3, 4, 5] Exception in thread 'main' java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at FailFastExample.main(FailFastExample.java:28)>

Abschluss

Java-Sammlungen Es ist für Java-Entwickler oder Programmierer wichtig, sie zu verstehen, da Java in verschiedenen Branchen weit verbreitet ist. Für Entwickler ist es wichtig, ein solides Verständnis der Kernkonzepte von Java Collections zu haben. Java ist eine der am häufigsten verwendeten Sprachen in Top-Unternehmen wie Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazonas usw. Um in diese oder andere IT-Unternehmen einzusteigen, müssen Sie die am häufigsten gestellten Interviewfragen von Java Collections beherrschen, um deren Java-basierte Online-Bewertung und das technische Interview zu bestehen.

Wenn Sie Codierungsfragen üben möchten, ist die JAVA-Sammelprogramme kann eine hilfreiche Ressource sein.

Fragen zum Vorstellungsgespräch bei Java Collections – FAQs

1. Was sind Sammlungen in Java-Interviewfragen?

Collection in Java ist ein Framework zum Speichern und Bearbeiten von Objektsammlungen.

2. Was sind die 4 Sammlungsklassen in Java?

Es gibt viele Sammlungen in Java, aber die am häufigsten verwendeten Sammlungen sind:

  1. Anordnungsliste
  2. LinkedList
  3. HashSet
  4. Stapel

3. Kann HashMap doppelte Schlüssel haben?

Nein, HashMap kann keine doppelten Schlüssel haben. Da HashMap eine der Sammlungen in Java ist, speichert es den Wert in Form eines Schlüsselwerts und jedem Schlüssel ist ein eigener Wert zugeordnet. Da also kein Schlüssel zwei Werte haben kann, können wir in HashMap keine doppelten Schlüssel haben.

4. Warum ist ein Array keine Sammlung?

Das Array ist keine Sammlung, das liegt an den unterschiedlichen Funktionen zwischen Sammlungen und Arrays, von denen einige im Folgenden erwähnt werden:

  • Die Größe des Arrays kann nach der Deklaration nicht mehr geändert werden
  • Arrays können nur Elemente homogener Datentypen enthalten.
  • Das Array kann sowohl primitive Datentypen als auch Objekte enthalten, während es in Sammlungen nur Wrapper-Objekte enthalten kann.