logo

34 Java Collections-interviewvragen

Op Java worden vragen over collectie-interviews het meest gesteld door de interviewers. Hier is de lijst met de meest gestelde collectie-interviewvragen met antwoorden.


1) Wat is het verzamelframework in Java?

Collection Framework is een combinatie van klassen en interface, die wordt gebruikt om de gegevens in de vorm van objecten op te slaan en te manipuleren. Het biedt hiervoor verschillende klassen zoals ArrayList, Vector, Stack en HashSet, etc. en interfaces zoals List, Queue, Set, etc..


2) Wat zijn de belangrijkste verschillen tussen array en collectie?

Array en Collection lijken enigszins op elkaar wat betreft het opslaan van de referenties van objecten en het manipuleren van de gegevens, maar ze verschillen in veel opzichten. De belangrijkste verschillen tussen de array en de verzameling worden hieronder gedefinieerd:

  • Arrays hebben altijd een vaste grootte, dat wil zeggen dat een gebruiker de lengte van de array niet kan vergroten of verkleinen op basis van zijn vereisten of tijdens runtime, maar in Collection kan de grootte naar behoefte dynamisch worden gewijzigd.
  • Arrays kunnen alleen homogene of vergelijkbare objecten opslaan, maar in Collection kunnen heterogene objecten worden opgeslagen.
  • Arrays kunnen niet de ?kant-en-klare? methoden voor gebruikersvereisten zoals sorteren, zoeken, etc. maar Collection bevat kant-en-klare methoden om te gebruiken.

3) Leg de verschillende interfaces uit die in het Collection-framework worden gebruikt?

Collection framework implementeert verschillende interfaces. Collection interface en Map interface (java.util.Map) zijn de voornamelijk gebruikte interfaces van Java Collection Framework. Hieronder vindt u een lijst met interfaces van Collection Framework:

1. Verzamelinterface: Verzameling (java.util.Collection) is de primaire interface en elke verzameling moet deze interface implementeren.

Syntaxis:

 public interface Collectionextends Iterable 

Waar geeft aan dat deze interface van het algemene type is

2. Lijstinterface: De lijstinterface breidt de collectie-interface uit en is een geordende verzameling objecten. Het bevat dubbele elementen. Het maakt ook willekeurige toegang tot elementen mogelijk.

Syntaxis:

 public interface List extends Collection 

3. Interface instellen: Set (java.util.Set) interface is een verzameling die geen dubbele elementen kan bevatten. Het kan alleen overgeërfde methoden van de verzamelinterface bevatten

Syntaxis:

 public interface Set extends Collection 

Wachtrij-interface: De wachtrijinterface (java.util.Queue) definieert de wachtrijgegevensstructuur, waarin de elementen worden opgeslagen in de vorm FIFO (first in first out).

Syntaxis:

 public interface Queue extends Collection 

4. Dequeue-interface: het is een wachtrij met twee uiteinden. Het maakt het inbrengen en verwijderen van elementen aan beide uiteinden mogelijk. Het implanteert de eigenschappen van zowel Stack als wachtrij, zodat het LIFO-stapelbewerkingen (Last in first out) en FIFO-bewerkingen (first in first out) kan uitvoeren.

Syntaxis:

 public interface Dequeue extends Queue 

5. Kaartinterface: Een kaart (java.util.Map) vertegenwoordigt een sleutel-waardepaaropslag van elementen. De kaartinterface implementeert de collectie-interface niet. Het kan alleen een unieke sleutel bevatten, maar kan ook dubbele elementen bevatten. Er zijn twee interfaces die Map in Java implementeren, namelijk de Map-interface en de Sorted Map.

faculteit in c

4) Wat is het verschil tussen ArrayList en Vector?

Nee.ArrayLijstVector
1)ArrayList is niet gesynchroniseerd.Vector is gesynchroniseerd.
2)ArrayList is geen oudere klasse.Vector is een oudere klasse.
3)ArrayList vergroot de grootte met 50% van de arraygrootte.Vector vergroot de grootte door de arraygrootte te verdubbelen.
4)ArrayList is niet 'thread-safe'? omdat het niet gesynchroniseerd is.Vectorlijst is 'draadveilig'? omdat elke methode gesynchroniseerd is.

5) Wat is het verschil tussen ArrayList en LinkedList?

Nee.ArrayLijstGelinkteLijst
1)ArrayList maakt gebruik van een dynamische array.LinkedList maakt gebruik van een dubbel gelinkte lijst.
2)ArrayList is niet efficiënt voor manipulatie omdat er te veel nodig is.LinkedList is efficiënt voor manipulatie.
3)ArrayList is beter om gegevens op te slaan en op te halen.LinkedList is beter om gegevens te manipuleren.
4)ArrayList biedt willekeurige toegang.LinkedList biedt geen willekeurige toegang.
5)ArrayList neemt minder geheugenoverhead in beslag omdat het alleen objecten opslaatLinkedList neemt meer geheugenoverhead in beslag, omdat het zowel het object als het adres van dat object opslaat.

6) Wat is het verschil tussen Iterator en ListIterator?

Iterator doorkruist de elementen alleen in voorwaartse richting, terwijl ListIterator de elementen in voorwaartse en achterwaartse richting doorkruist.

Nee.IteratorLijstIterator
1)De Iterator doorkruist de elementen alleen in voorwaartse richting.ListIterator doorloopt de elementen zowel in voorwaartse als achterwaartse richting.
2)De Iterator kan worden gebruikt in Lijst, Set en Wachtrij.ListIterator kan alleen in List worden gebruikt.
3)De Iterator kan alleen een verwijderbewerking uitvoeren terwijl hij door de verzameling loopt.ListIterator kan ?add,? ?verwijderen,? En instellen? tijdens het doorkruisen van de collectie.

7) Wat is het verschil tussen Iterator en Enumeratie?

Nee.IteratorOpsomming
1)De Iterator kan zowel oudere als niet-verouderde elementen doorkruisen.Opsomming kan alleen oudere elementen doorkruisen.
2)De Iterator is faalsnel.Opsomming is niet feilloos.
3)De Iterator is langzamer dan Opsomming.Opsomming is sneller dan Iterator.
4)De Iterator kan een verwijderbewerking uitvoeren terwijl hij door de verzameling loopt.De opsomming kan alleen een verplaatsingsbewerking op de verzameling uitvoeren.

8) Wat is het verschil tussen Lijst en Set?

De List en Set breiden beide de verzamelingsinterface uit. Er zijn echter enkele verschillen tussen beide, die hieronder worden vermeld.

  • De lijst kan dubbele elementen bevatten, terwijl Set unieke items bevat.
  • De lijst is een geordende verzameling die de invoegvolgorde handhaaft, terwijl Set een ongeordende verzameling is die de invoegvolgorde niet behoudt.
  • De List-interface bevat een enkele oudere klasse, namelijk de Vector-klasse, terwijl de Set-interface geen enkele oudere klasse heeft.
  • De List-interface kan n aantal nulwaarden toestaan, terwijl de Set-interface slechts één nulwaarde toestaat.

9) Wat is het verschil tussen HashSet en TreeSet?

De HashSet en TreeSet, beide klassen, implementeren de Set-interface. De verschillen tussen beide staan ​​hieronder vermeld.

  • HashSet handhaaft geen volgorde, terwijl TreeSet een oplopende volgorde handhaaft.
  • HashSet wordt gehinderd door een hashtabel, terwijl TreeSet wordt geïmplementeerd door een boomstructuur.
  • HashSet presteert sneller dan TreeSet.
  • HashSet wordt ondersteund door HashMap, terwijl TreeSet wordt ondersteund door TreeMap.

10) Wat is het verschil tussen Set en Kaart?

De verschillen tussen de set en de kaart worden hieronder weergegeven.

  • Set bevat alleen waarden, terwijl Map zowel sleutel als waarden bevat.
  • Set bevat unieke waarden, terwijl Map unieke sleutels met dubbele waarden kan bevatten.
  • Set bevat een enkel aantal nulwaarden, terwijl Map een enkele nulsleutel kan bevatten met een aantal nulwaarden.

11) Wat is het verschil tussen HashSet en HashMap?

De verschillen tussen de HashSet en HashMap worden hieronder vermeld.

  • HashSet bevat alleen waarden, terwijl HashMap de invoer (sleutel, waarde) bevat. HashSet kan worden herhaald, maar HashMap moet worden omgezet in Set om te worden herhaald.
  • HashSet implementeert de Set-interface, terwijl HashMap de Map-interface implementeert
  • HashSet kan geen dubbele waarde hebben, terwijl HashMap dubbele waarden met unieke sleutels kan bevatten.
  • HashSet bevat het enige aantal nulwaarden, terwijl HashMap een enkele nulsleutel kan bevatten met een aantal nulwaarden.

12) Wat is het verschil tussen HashMap en TreeMap?

De verschillen tussen HashMap en TreeMap worden hieronder gegeven.

  • HashMap handhaaft geen volgorde, maar TreeMap handhaaft een oplopende volgorde.
  • HashMap wordt geïmplementeerd door een hashtabel, terwijl TreeMap wordt geïmplementeerd door een boomstructuur.
  • HashMap kan worden gesorteerd op sleutel of waarde, terwijl TreeMap kan worden gesorteerd op sleutel.
  • HashMap kan een nulsleutel bevatten met meerdere nulwaarden, terwijl TreeMap geen nulsleutel kan bevatten, maar wel meerdere nulwaarden kan hebben.

13) Wat is het verschil tussen HashMap en Hashtable?

Nee.Hash kaartHashtabel
1)HashMap is niet gesynchroniseerd.Hashtabel is gesynchroniseerd.
2)HashMap kan één nulsleutel en meerdere nulwaarden bevatten.Hashtabel mag geen null-sleutel of null-waarde bevatten.
3)HashMap is niet ?thread-safe? dus het is handig voor toepassingen zonder threads.Hashtable is thread-safe en kan tussen verschillende threads worden gedeeld.
4)4) HashMap erft de klasse AbstractMapHashtable neemt de klasse Dictionary over.

14) Wat is het verschil tussen Collectie en Collecties?

De verschillen tussen de collectie en collecties worden hieronder weergegeven.

  • De collectie is een interface, terwijl collecties een klasse is.
  • De verzamelingsinterface biedt de standaardfunctionaliteit van de gegevensstructuur voor Lijst, Set en Wachtrij. De klasse Collections is echter bedoeld om de collectie-elementen te sorteren en te synchroniseren.
  • De Collection-interface biedt de methoden die kunnen worden gebruikt voor de gegevensstructuur, terwijl de Collections-klasse de statische methoden biedt die kunnen worden gebruikt voor verschillende bewerkingen op een verzameling.

15) Wat is het verschil tussen Vergelijkbaar en Vergelijker?

Nee.VergelijkbaarComparator
1)Vergelijkbaar biedt slechts één soort reeks.De Comparator biedt meerdere soorten reeksen.
2)Het biedt één methode met de naam CompareTo().Het biedt één methode genaamd Compare().
3)Het is te vinden in het pakket java.lang.Het bevindt zich in het java.util-pakket.
4)Als we de vergelijkbare interface implementeren, wordt de daadwerkelijke klasse gewijzigd.De daadwerkelijke klasse wordt niet gewijzigd.

16) Wat versta je onder BlockingQueue?

BlockingQueue is een interface die de Queue-interface uitbreidt. Het biedt gelijktijdigheid bij bewerkingen zoals ophalen, invoegen en verwijderen. Tijdens het ophalen van een element wacht het tot de wachtrij niet leeg is. Terwijl hij de elementen opslaat, wacht hij op de beschikbare ruimte. BlockingQueue kan geen null-elementen bevatten en de implementatie van BlockingQueue is thread-safe.

Syntaxis:

 public interface BlockingQueue extends Queue 

17) Wat is het voordeel van het eigenschappenbestand?

Als u de waarde in het eigenschappenbestand wijzigt, hoeft u de Java-klasse niet opnieuw te compileren. Het maakt de applicatie dus eenvoudig te beheren. Het wordt gebruikt om informatie op te slaan die regelmatig moet worden gewijzigd. Beschouw het volgende voorbeeld.

 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')); } } 

Uitvoer

 system oracle 

18) Wat betekent de hashCode()-methode?

De methode hashCode() retourneert een hashcodewaarde (een geheel getal).

De methode hashCode() retourneert hetzelfde gehele getal als twee sleutels (door de methode equals() aan te roepen) identiek zijn.

Het is echter mogelijk dat twee hashcodenummers verschillende of dezelfde sleutels hebben.

Als twee objecten geen gelijk resultaat opleveren met behulp van de equals() methode, dan zal de hashcode() methode het verschillende gehele resultaat voor beide objecten opleveren.


19) Waarom overschrijven we de equals() methode?

De equals-methode wordt gebruikt om te controleren of twee objecten hetzelfde zijn of niet. Het moet worden overschreven als we de objecten willen controleren op basis van de eigenschap.

Werknemer is bijvoorbeeld een klasse met drie gegevensleden: ID, naam en salaris. We willen echter de gelijkheid van het werknemersobject controleren aan de hand van het salaris. Vervolgens moeten we de methode equals() overschrijven.


20) Hoe kan ik Lijst-, Set- en Kaartelementen synchroniseren?

Ja, de klasse Collections biedt methoden om List-, Set- of Map-elementen gesynchroniseerd te maken:

openbare statische lijst gesynchroniseerdLijst(Lijst l){}
openbare statische Set gesynchroniseerdeSet(Set s){}
openbare statische SortedSet gesynchroniseerdSortedSet(SortedSet s){}
openbare statische kaart gesynchroniseerdMap(Map m){}
openbare statische SortedMap gesynchroniseerdSortedMap(SortedMap m){}

21) Wat is het voordeel van de generieke collectie?

Er zijn drie belangrijke voordelen van het gebruik van de generieke collectie.

lente laars
  • Als we de generieke klasse gebruiken, hebben we geen typecasting nodig.
  • Het is typeveilig en wordt tijdens het compileren gecontroleerd.
  • Generiek bevestigt de stabiliteit van de code door fouten tijdens het compileren detecteerbaar te maken.

22) Wat is hash-collision in Hashtable en hoe wordt dit afgehandeld in Java?

Twee verschillende sleutels met dezelfde hashwaarde staan ​​bekend als hash-collision. Om botsingen te voorkomen, worden twee afzonderlijke vermeldingen in één hasjbucket bewaard. Er zijn twee manieren om hash-botsing te voorkomen.

  • Aparte keten
  • Adressering openen

23) Wat is de klasse Woordenboek?

De klasse Dictionary biedt de mogelijkheid om sleutel-waardeparen op te slaan.


24) Wat is de standaardgrootte van de bezettingsgraad bij op hashing gebaseerde verzameling?

De standaardgrootte van de belastingsfactor is 0,75 . De standaardcapaciteit wordt berekend als initiële capaciteit * bezettingsfactor. Bijvoorbeeld 16 * 0,75 = 12. 12 is dus de standaardcapaciteit van Map.


25) Wat versta je onder fail-fast?

De Iterator in Java die onmiddellijk ConcurrentmodificationException genereert als er een structurele wijziging optreedt, wordt aangeroepen als een Fail-fast iterator. Fail-fats iterator vereist geen extra ruimte in het geheugen.


26) Wat is het verschil tussen Array en ArrayList?

De belangrijkste verschillen tussen de Array en ArrayList worden hieronder weergegeven.

SNArrayArrayLijst
1De array heeft een vaste grootte, wat betekent dat we de grootte van de array niet naar behoefte kunnen wijzigen.ArrayList heeft niet de vaste grootte, we kunnen de grootte dynamisch wijzigen.
2Arrays zijn van het statische type.ArrayList heeft een dynamische grootte.
3Arrays kunnen zowel primitieve gegevenstypen als objecten opslaan.ArrayList kan de primitieve gegevenstypen niet opslaan; het kan alleen de objecten opslaan.

27) Wat is het verschil tussen de lengte van een array en de grootte van ArrayList?

De lengte van een array kan worden verkregen met behulp van de eigenschap lengte, terwijl ArrayList de eigenschap lengte niet ondersteunt, maar we kunnen de methode size() gebruiken om het aantal objecten in de lijst te verkrijgen.

Het vinden van de lengte van de array

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

Het vinden van de grootte van de ArrayList

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) Hoe ArrayList naar Array en Array naar ArrayList converteren?

We kunnen een Array naar ArrayList converteren met behulp van de asList() -methode van de klasse Arrays. De methode asList() is de statische methode van de klasse Arrays en accepteert het List-object. Overweeg de volgende syntaxis:

Java converteert char naar int
 Arrays.asList(item) 

We kunnen een ArrayList naar Array converteren met de methode toArray() van de klasse ArrayList. Overweeg de volgende syntaxis om de ArrayList naar het List-object te converteren.

 List_object.toArray(new�String[List_object.size()]) 

29) Hoe maak ik Java ArrayList alleen-lezen?

We kunnen Java ArrayList alleen-lezen verkrijgen door de methode Collections.unmodifiableCollection() aan te roepen. Wanneer we een ArrayList als alleen-lezen definiëren, kunnen we geen enkele wijziging in de verzameling uitvoeren via de methode �add(), remove() of set().


30) Hoe verwijder ik duplicaten uit ArrayList?

Er zijn twee manieren om duplicaten uit de ArrayList te verwijderen.

    HashSet gebruiken:Door HashSet te gebruiken kunnen we het dubbele element uit de ArrayList verwijderen, maar de invoegvolgorde blijft dan niet behouden.LinkedHashSet gebruiken:We kunnen de invoegvolgorde ook behouden door LinkedHashSet te gebruiken in plaats van HashSet.

Het proces om dubbele elementen uit ArrayList te verwijderen met behulp van de LinkedHashSet:

  • Kopieer alle elementen van ArrayList naar LinkedHashSet.
  • Leeg de ArrayList met behulp van de clear()-methode, waardoor alle elementen uit de lijst worden verwijderd.
  • Kopieer nu alle elementen van LinkedHashset naar ArrayList.

31) Hoe ArrayList omkeren?

Om een ​​ArrayList om te keren, kunnen we de reverse()-methode van de klasse Collections gebruiken. Beschouw het volgende voorbeeld.

 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()); } } } 

Uitvoer

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) Hoe sorteer ik ArrayList in aflopende volgorde?

Om de ArrayList in aflopende volgorde te sorteren, kunnen we de reverseOrder-methode van de klasse Collections gebruiken. Beschouw het volgende voorbeeld.

 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()); } } } 

Uitvoer

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) Hoe ArrayList synchroniseren?

We kunnen ArrayList op twee manieren synchroniseren.

  • Met behulp van de Collections.synchronizedList()-methode
  • CopyOnWriteArrayList gebruiken

3. 4) Wanneer ArrayList en LinkedList gebruiken?

LinkedLists zijn beter te gebruiken voor de updatebewerkingen, terwijl ArrayLists beter te gebruiken zijn voor de zoekbewerkingen.