logo

Java Collections interviewspørgsmål og svar

Java Collection Framework blev introduceret i JDK 1.2 som indeholder alle samlingsklasser og grænseflader. Java samling er en ramme, der giver en mekanisme til at lagre og manipulere samlingen af ​​objekter. Det giver udviklere adgang til færdigpakkede datastrukturer og algoritmer til at manipulere data.

I denne artikel har vi dækket top 50 Java Collections interviewspørgsmål og svar der dækker alt fra grundlæggende til avancerede Java-kollektionskoncepter såsom navigationssamling, WeakHashMap, streams Lambdas etc. Uanset om du er en friskere eller en erfaren Java-udvikler , giver disse Java Collections interviewspørgsmål dig al den selvtillid, du har brug for, for at klare dit næste Java-interview.



Java Collections interviewspørgsmål

Java Collections interviewspørgsmål

Vi har delt de 50 spørgsmål op i to dele: Erfarne og friske. Lad os begynde med spørgsmålene til Freshers.

Indholdsfortegnelse



Java Collection-interviewspørgsmål for nybegyndere

1. Hvad er Collection i Java?

Begrebet kollektion refererer til en gruppe af objekter repræsenteret som én enhed. Klasser i Java-samlingsklassehierarkiet er opdelt i to rod grænseflader: Samling (java.util.Collection) og kort (java.util.Map) . Termer, du vil støde på, mens du lærer om samlingen i Java:

  • Indsamlingsramme: Javas Collection Framework definerer klasser og grænseflader til at repræsentere grupper af objekter som en enkelt enhed. C++-udviklere kan sammenligne samlingsrammerne med STL (Standard Template Library) og Container Framework med Collection Framework, hvis de kommer fra en C++ baggrund.
  • Indsamlingsgrænseflade: En klasses grænseflade specificerer, hvad den skal gøre, ikke hvordan. Det er med andre ord planen for klassen. Denne grænseflade giver de mest almindelige metoder til alle samlingsobjekter, der er en del af Collection Framework. Alternativt repræsenterer det det enkelte objekt som en helhed.
  • Samlingsklasse: Som medlem af Collection Framework er det en del af java.util-pakken. Samlingsobjektet er forsynet med mange hjælpemetoder i denne klasse.

2. Hvad er et Framework i Java?

Rammer er sæt af klasser og grænseflader der giver en færdigbygget arkitektur. Det er ikke nødvendigt at definere en ramme for at implementere nye funktioner eller klasser. Som et resultat inkluderer et optimalt objektorienteret design en ramme, der indeholder en samling af klasser, der alle udfører lignende opgaver. Rammen kan bruges på en række forskellige måder, såsom ved at kalde dets metoder, udvide det og levere tilbagekald, lyttere og andre implementeringer. Nogle af de populære rammer i java er:

  • Forår
  • Gå i dvale
  • Struts
  • Google Web Toolkit (GWT)
  • JavaServer Faces (JSF)

3. Hvad er forskellen mellem Array og Collection i Java?

Arrays er en samling af lignende variabler med et fælles navn i Java. Der er nogle forskelle mellem arrays i Java og C/C++. På den anden side er samlinger grupper af individuelle objekter, der danner en enkelt enhed kendt som samlingen af ​​objekter.



Arrays

Kollektion

Arrays er faste i størrelse, det vil sige, at når vi har oprettet et array, kan vi ikke øge eller mindske baseret på vores krav. Kollektionen er dyrkbar og er baseret på vores krav. Vi kan øge eller mindske størrelsen.
Med hensyn til hukommelse anbefales Arrays ikke til brug. Med hensyn til hukommelse anbefales samlinger til brug.
Med hensyn til ydeevne anbefales Arrays til brug. Med hensyn til ydeevne anbefales samlinger ikke til brug.
Arrays kan kun indeholde homogene datatypeelementer. Samling kan indeholde både homogene og heterogene elementer.

For mere information, se artiklen – Forskellen mellem arrays og samlinger i Java

4. Hvad er de forskellige grænseflader, der bruges i Java Collections Framework?

Samlingen er kendt som roden af ​​samlingshierarkiet. Samlinger repræsenterer grupper af objekter kendt som elementer. Java-platformen giver ikke nogen direkte implementering af denne grænseflade, men samlingsgrænsefladen implementeres af List og Set klasser.

  • Samling grænseflade
  • Listegrænseflade
  • Indstil interface
  • Kø interface
  • Dequeue interface
  • Kort interface

5. Forklar hierarkiet af Collection frameworket i Java.

Alle klasser og grænseflader, der kræves af samlingsrammerne, er indeholdt i hjælpepakken (java. util). Samlingsrammer har en grænseflade kaldet en iterabel grænseflade, som gør det muligt for iteratoren at iterere over alle samlinger. Ud over denne grænseflade fungerer hovedindsamlingsgrænsefladen som rod til samlingsrammen. Alle samlingerne udvider denne samlingsgrænseflade og udvider derved egenskaberne for iteratoren og metoderne for denne grænseflade. Følgende figur illustrerer hierarkiet af indsamlingsrammen.

Java-samlingshierarki

6. Hvad er fordelene ved indsamlingsrammen?

Fordele ved Collection Framework: Da manglen på en indsamlingsramme gav anledning til ovenstående sæt af ulemper, er følgende fordele ved indsamlingsrammen.

  • Konsekvent API: API'en har et grundlæggende sæt grænseflader som f.eks Kollektion , Sæt , Liste , eller Kort , har alle klasser (ArrayList, LinkedList, Vector osv.), der implementerer disse grænseflader nogle fælles sæt metoder.
  • Reducerer programmeringsindsats: En programmør behøver ikke at bekymre sig om designet af samlingen, men han kan snarere fokusere på dens bedste brug i sit program. Derfor er det grundlæggende koncept for objektorienteret programmering (dvs.) abstraktion blevet implementeret med succes.
  • Øger programhastighed og kvalitet: Øger ydeevnen ved at levere højtydende implementeringer af nyttige datastrukturer og algoritmer, fordi programmøren i dette tilfælde ikke behøver at tænke på den bedste implementering af en specifik datastruktur. Han kan simpelthen bruge den bedste implementering til drastisk at booste ydeevnen af ​​sin algoritme/program.

7. Hvad er ArrayList i Java?

ArrayList er en del af Java-samlingsrammerne, og det er en klasse af java.util-pakken. Det giver os dynamiske arrays i Java. De vigtigste fordele ved ArrayList er, at hvis vi erklærer et array, er det nødvendigt at nævne størrelsen, men i ArrayList er det ikke nødvendigt at nævne størrelsen på ArrayList, hvis du vil nævne størrelsen, så kan du gøre det.

Array liste

Billede af Array List

For mere information, se artiklen – ArrayList i Java

8. Hvad er forskellen mellem Collection og Collections?

Kollektion Samlinger
Det er en grænseflade. Det er en brugsklasse.
Det bruges til at repræsentere en gruppe af individuelle objekter som en enkelt enhed. Den definerer flere hjælpemetoder, der bruges til at arbejde med indsamling.
Samlingen er en grænseflade, der indeholder en statisk metode siden java8. Interfacet kan også indeholde abstrakte og standardmetoder. Den indeholder kun statiske metoder.

For mere information, se artiklen – Samling vs samlinger i Java med eksempel

9. Forskel mellem ArrayList og LinkedList i java-samlingsrammerne?

ArrayList vs LinkedList

ArrayList og LinkedList

ArrayList

LinkedList

Denne klasse bruger et dynamisk array til at gemme elementerne i den. Med introduktionen af ​​generiske stoffer understøtter denne klasse lagring af alle typer objekter. Denne klasse bruger en dobbelt linket liste til at gemme elementerne i den. I lighed med ArrayList understøtter denne klasse også lagring af alle typer objekter.
Manipulering af ArrayList tager længere tid på grund af den interne implementering. Når vi fjerner et element internt, krydses arrayet, og hukommelsesbittene forskydes. Manipulering af LinkedList tager mindre tid sammenlignet med ArrayList, fordi der i en dobbelt-linket liste ikke er nogen idé om at flytte hukommelsesbittene. Listen gennemgås, og referencelinket ændres.
Denne klasse implementerer en listegrænseflade. Derfor fungerer dette som en liste. Denne klasse implementerer både List-grænsefladen og Deque-grænsefladen. Derfor kan den fungere som en liste og et deque.
Denne klasse fungerer bedre, når applikationen kræver lagring af data og adgang til dem. Denne klasse fungerer bedre, når applikationen kræver manipulation af de lagrede data.

For mere information, se artiklen – ArrayList vs LinkedList i Java

10. Hvad er en iterator?

Javas samlingsramme bruger iteratorer til at hente elementer én efter én. Denne iterator er universel, da den kan bruges med enhver type samlingsobjekt. Ved hjælp af Iterator kan vi udføre både læse- og fjernehandlinger. Dette er en forbedret version af Enumeration med tilføjelse af fjernelse af elementer.

Ved opregning af elementer i alle Collection framework implementerede grænseflader, som f.eks Sæt , Liste , , Om hvad , og alle implementerede klasser af Map, skal der bruges en Iterator. Den eneste markør, der er tilgængelig for hele samlingsrammen, er iteratoren. Ved at bruge iterator()-metoden i samlingsgrænsefladen kan du oprette et iteratorobjekt.

Syntaks:

Iterator itr = c.  iterator  ();>

Bemærk: Her er c ethvert samlingsobjekt. itr er af typen Iterator-interface og henviser til c.

For mere information, se artiklen – Iteratorer i Java

11. Hvad er forskellen mellem en iterator og en opregning?

En stor forskel mellem iterator og enumeration er, at iteratorer har en remove() metode, mens enumerations ikke har. Ved hjælp af Iterator kan vi således manipulere objekter ved at tilføje og fjerne dem fra samlinger. Da opregning kun kan krydse objekter og hente dem, opfører den sig som en skrivebeskyttet grænseflade.

For mere information, se artiklen – Forskellen mellem iterator og enumeration

12. Hvad er forskellen mellem List og Set i Java

En stor forskel mellem en liste og et sæt er, at en liste kan indeholde duplikerede elementer, mens et sæt kun indeholder unikke elementer. Listen er Ordnet og bevarer rækkefølgen af ​​det objekt, de er tilføjet til. Sættet er uordnet.

Liste

Sæt

Listen er en indekseret sekvens. Sættet er en ikke-indekseret sekvens.
Listen tillader duplikerede elementer Sættet tillader ikke duplikerede elementer.
Elementer efter deres position kan tilgås. Positionsadgang til elementer er ikke tilladt.
Flere nul-elementer kan gemmes. Null-elementer kan kun gemmes én gang.
Listeimplementeringer er ArrayList, LinkedList, Vector, Stack Set implementeringer er HashSet, LinkedHashSet.

For mere information, se artiklen – Forskellen mellem liste og sæt i Java

13. Hvad er den bedste praksis for Java Collections Framework?

Følgende er nogle af de bedste fremgangsmåder, når du bruger Java-samlinger:

  • Programmer skal skrives som grænseflader, ikke implementeringer, så vi kan ændre implementeringen senere.
  • Når det er muligt, skal du bruge Generics for at sikre typesikkerhed og undgå ClassCastExceptions.
  • Valg af den passende type samling baseret på behovet. For eksempel, hvis størrelsen er fast, vil vi måske bruge en Array over en ArrayList. Når vi itererer over kortet, bør vi bruge LinkedHashMap. Sæt er den bedste måde at undgå dubletter.
  • Brug uforanderlige klasser leveret af JDK som nøgler i Map for at undgå implementering af hashCode() og equals().
  • For at øge kodens læsbarhed bør vi bruge isEmpty() i stedet for at finde størrelsen på samlingen og sammenligne den med nul.
  • I stedet for at skrive din egen implementering, skal du bruge værktøjsklassen Samlinger til at få skrivebeskyttede, Synkroniserede eller tomme samlinger i stedet. Det forbedrer genbrug af kode, samtidig med at det resulterer i større stabilitet.

14. Hvad er en prioriteret kø i Java?

Prioritetskøer bruges til at behandle objekter i henhold til deres prioritet. Køer følger First-In-First-Out-algoritmen, men nogle gange skal elementerne i køen behandles i henhold til deres prioritet, og det er her PriorityQueue kommer i spil. Prioritetskøer er baseret på prioriterede dynger.

Elementerne i prioritetskøen er ordnet i henhold til den naturlige rækkefølge, eller af en komparator, der stilles til rådighed ved køens opbygningstidspunkt, afhængigt af hvilken konstruktør der anvendes.

Prioriterede køer i Java

Prioriterede køer i Java

Erklæring:

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

Klassen implementerer Serializable, Iterable, Collection og Queue interfaces.

15. Hvad er forskellen mellem List, set og map i java?

Liste

Sæt

Kort

Listegrænsefladen tillader duplikerede elementer

Sættet tillader ikke duplikerede elementer.

Kortet tillader ikke duplikerede elementer

Listen bevarer indsættelsesrækkefølgen.

Sættet opretholder ingen indsættelsesrækkefølge.

Kortet opretholder heller ikke nogen indsættelsesrækkefølge.

understreng java

Vi kan tilføje et hvilket som helst antal null-værdier.

Men i sættet næsten kun én nulværdi.

Kortet tillader højst en enkelt null-nøgle og et hvilket som helst antal null-værdier.

Listeimplementeringsklasserne er Array List og LinkedList.

Sæt implementeringsklasser er HashSet, LinkedHashSet og TreeSet.

Kortimplementeringsklasser er HashMap, HashTable, TreeMap, ConcurrentHashMap og LinkedHashMap.

For mere information, se artiklen – Forskellen mellem List, Set og Map i Java

16. Hvad er forskellen mellem Queue og Stack?

Stak

Stacks arbejder efter LIFO-princippet, hvilket betyder, at det element, der indsættes sidst, vil være det første element, der tages ud. Køer arbejder efter FIFO-princippet, hvilket betyder, at det element, der indsættes først, vil være det første element, der tages ud.
I stakke finder indsættelse og sletninger kun sted fra toppen. I køer sker indsættelse bagerst på listen, og sletning sker fra forsiden af ​​listen.
Indstiksoperation kaldes push-operation. Indsættelsesoperation kaldes kødrift.
Sletning kaldes pop-operation. Sletningsoperation kaldes dequeue operation.
Toppen af ​​en stak peger altid på det sidste element på listen, som er den eneste markør, der bruges til at få adgang til listen. To pointere opretholdes for at få adgang til køer. Den forreste markør peger på det første indsatte element, og den bagerste peger på det sidst indsatte element.

17. Hvad er BlockingQueue i Java?

BlockingQueue-grænsefladen i Java er tilføjet i Java 1.5 sammen med forskellige andre samtidige Utility-klasser som ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList osv. BlockingQueue-grænsefladen understøtter flowkontrol (udover kø) ved at introducere blokering, hvis enten BlockingQueue er fuld eller tom.

En tråd, der forsøger at sætte et element i kø i en fuld kø, blokeres, indtil en anden tråd giver plads i køen, enten ved at fjerne et eller flere elementer i køen eller rydde køen helt. På samme måde blokerer den en tråd, der forsøger at slette fra en tom kø, indtil nogle andre tråde indsætter et element. BlockingQueue accepterer ikke en nulværdi. Hvis vi forsøger at sætte null-elementet i kø, så kaster det NullPointerException.

Brug af BlockingQueue

Blokering af kø i Java

Blokering af kø i Java

Hierarki af BlockingQueue

Hierarki af blokeringskø i Java

Hierarki af blokeringskø i Java

Erklæring:

public interface BlockingQueue extends Queue>

Her, OG er den type elementer, der er gemt i samlingen.

For mere information, se artiklen – BlockingQueue Interface i Java

18. Hvad er hashCode()?

Billede for at demonstrere Java Hash Code

Billede for at demonstrere Java Hash Code

hashCode()-metoden returnerer hashcode-værdien som et heltal. Det er defineret i Java Object-klassen, som beregner hashværdierne for givne inputobjekter. Hashcode-værdi bruges mest i hashing-baserede samlinger som HashMap, HashSet, HashTable….osv. Denne metode skal tilsidesættes i hver klasse, der tilsidesætter equals() metoden.

Syntaks:

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

For mere information, se artiklen – equals() og hashCode() metoder i Java

19. Skelne mellem ArrayList og Vector i Java Collection Framework.

I indsamlingsinterviews bliver dette spørgsmål ofte stillet; dog er Vector synkroniseret, mens ArrayList ikke er det. ArrayList er hurtigere end Vector. ArrayLists Array-størrelse øges med 50%, når det er nødvendigt, mens Vectors kapacitet fordobles, når det er nødvendigt.

hvornår slutter q1
Array List vs Vector i java

Array List vs Vector i java

ArrayList

Vektor

ArrayList er ikke synkroniseret Vektoren er synkroniseret.
Størrelsen på ArrayList øges med op til 50 % af den aktuelle array-størrelse, hvis antallet af elementer overstiger dens kapacitet. Størrelsen af ​​ArrayList øges op til 100 % af den aktuelle array-størrelse, hvis antallet af elementer overstiger dens kapacitet.
ArrayList er hurtig, fordi den er ikke-synkroniseret. Vektor er langsommere, fordi den er synkroniseret.
Iteratorgrænsefladen bruges til at krydse elementerne En iteratorgrænseflade eller Enumeration kan bruges til at krydse vektoren.

For mere information, se artiklen – Vector vs ArrayList i Java

20. Skel mellem Iterator og ListIterator.

Iterator

ListIterator

Kan kun krydse elementer i samlingen i fremadgående retning. Kan krydse elementer, der er til stede i samlingen, både fremad og bagud.
Hjælper med at krydse kort, liste og sæt. Kan kun krydse Liste og ikke de to andre.
Indekser kan ikke opnås ved at bruge Iterator. Det har metoder som nextIndex() og previousIndex() til at opnå indekser af elementer til enhver tid, mens du krydser listen.
Kan ikke ændre eller erstatte elementer, der findes i samlingen Vi kan ændre eller erstatte elementer ved hjælp af sæt(E e)

For mere information, se artiklen – Forskellen mellem en Iterator og ListIterator

21. Hvad er forskellen mellem en iterator og en enumeration?

Iterator: Det er en universel iterator, da vi kan anvende den på ethvert samlingsobjekt. Ved at bruge en Iterator kan vi udføre både læse- og fjernehandlinger.

Syntaks:

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

Optælling: Enumeration (eller enum) er en brugerdefineret datatype. Det bruges hovedsageligt til at tildele navne til integralkonstanter, navnene gør et program let at læse og vedligeholde.

Syntaks:

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

Iterator

Optælling

Iteratoren er en universel markør, da den er anvendelig til alle samlingsklasser. Optælling er ikke en universel markør, da den kun gælder for ældre klasser.
Iteratoren har metoden remove(). Optælling har ikke metoden remove().
Iteratoren kan foretage ændringer (f.eks. ved at bruge metoden remove(), som fjerner elementet fra samlingen under gennemkørsel). Optællingsgrænsefladen fungerer som en skrivebeskyttet grænseflade, man kan ikke foretage ændringer i samlingen, mens man krydser elementerne i samlingen.
Iterator er ikke en ældre grænseflade. Iterator kan bruges til at krydse HashMap, LinkedList, ArrayList, HashSet, TreeMap og TreeSet. Enumeration er en ældre grænseflade, der bruges til at krydse Vector og Hashtable.

For mere information, se artiklen – Forskellen mellem iterator og enumeration

22. Hvad er funktionerne i Java Hashmap?

HashMap ligner HashTable, men det er usynkroniseret. Det giver os også mulighed for at gemme null-nøglerne, men der skal kun være ét null-nøgleobjekt, og der kan være et hvilket som helst antal null-værdier. Denne klasse giver ingen garantier for rækkefølgen af ​​kortet. For at bruge denne klasse og dens metoder skal du importere java.util. HashMap pakke eller dens superklasse.

HashMap i Java

HashMap i Java

Syntaks:

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

Parametre: Det kræver to parametre, nemlig som følger:

  • Typen af ​​nøgler, der vedligeholdes af dette kort (K)
  • Typen af ​​kortlagte værdier (V)

For mere information, se artiklen – HashMap i Java med eksempler

23. Hvad er samlingsgrænseflader?

Det Kollektion interface er medlem af Java Collections Framework. Det er en del af java.util pakke. Det er en af ​​rodgrænsefladerne i samlingshierarkiet. Samling-grænsefladen er ikke direkte implementeret af nogen klasse. Det implementeres dog indirekte via dets undertyper eller undergrænseflader som List, Queue og Set.

For eksempel, HashSet-klassen implementerer Set-grænsefladen, som er en undergrænseflade til Collection-grænsefladen. Hvis en samlingsimplementering ikke implementerer en bestemt operation, skal den definere den tilsvarende metode til at kaste UnsupportedOperationException.

Indsamlingshierarki:

Samling grænseflade i Java

Samling grænseflade i Java

24. Forklar listegrænsefladen.

Klassegrænseflade i Java

Klassegrænseflade i Java

I Java giver List-grænsefladen brugeren mulighed for at gemme en ordnet samling af objekter. Listen er samlingens underordnede grænseflade. I Samling er en liste en ordnet samling af objekter, som kan have duplikerede værdier. Da List bevarer indsættelsesrækkefølgen, tillader den positionsadgang og indsættelse, hvilket også tillader duplikerede værdier.

Syntaks:

public interface List extends Collection ;>

Denne listegrænseflade er implementeret af forskellige klasser som ArrayList, Vector, Stack osv. Da alle underklasserne implementerer listen, kan vi instansiere et listeobjekt med enhver af disse klasser.

Eksempel:

List al = ny ArrayList ();
Liste ll = ny LinkedList ();
Liste v = ny vektor ();

Hvor T er objektets type

Array List i Java

Array List i Java

Klasserne, der implementerer List-grænsefladen, er som følger:

  • ArrayList
  • LinkedList
  • Vektor
  • Stak

25. Skriv et program til at konvertere en given matrix til en samling med asList() metoden.

For at konvertere array-baserede data til samlingsbaserede kan vi bruge java.util.Arrays klasse. Denne klasse giver en statisk metode asList(T...a), der konverterer arrayet til en samling.

Java

Download video fra youtube vlc




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

>

>

Produktion

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

26. skelne mellem HashSet og HashMap

HashSet

HashMap

HashSet implementerer Set-grænsefladen HashMap implementerer kortgrænsefladen
Ingen dubletter er tilladt Ja, duplikatværdier er tilladt, men ingen duplikatnøgle er tilladt
Dummy-værdier er tilladt i HashSet. Ingen Dummy-værdier er tilladt i HashMap.
Et enkelt objekt er påkrævet under en tilføjelsesoperation Der kræves 2 objekter under en tilføjelsesoperation
Hastighed er forholdsvis langsommere end HashMap Hastighed er forholdsvis hurtigere end HashSet på grund af hashing-teknik er blevet brugt her.
Har en enkelt nulværdi Enkelt nul-nøgle og et vilkårligt antal nul-værdier
Add() metoden bruges til indsættelsen Put () metoden bruges til indsættelse.

For mere information, se artiklen – Forskellen mellem HashMap og HashSet

27. Forskel mellem HashSet og HashTable.

HashSet

HashTabel

HashSet tillader NULL-elementer HashTable tillader ikke NULL-elementer.

Objekter, som du indsætter i HashSet, er ikke garanteret at blive indsat i samme rækkefølge. Objekter indsættes baseret på deres hash-kode. LinkedHashSet kan bruges til at opretholde orden.

HashTable opretholder ikke indsættelsesrækkefølgen.
HashSet er ikke synkroniseret, men det kan synkroniseres eksternt. HashTable er synkroniseret.
add() metode bruges til at indsætte i HashSet put() metoden bruges til at indsætte i HashTable

28. Hvad er standardstørrelsen for belastningsfaktoren i den hashing-baserede samling?

Når belastningsfaktoren øges, øges kapaciteten, så HashMap'ets operationelle kompleksitet forbliver O(1), hvis forholdet mellem det aktuelle element og den oprindelige kapacitet krydser tærsklen. Betydningen af ​​operationel kompleksitet af O(1) betyder, at genfindings- og indsættelsesoperationerne tager konstant tid. Standardbelastningsfaktorstørrelsen er 0,75 . Standardkapaciteten beregnes ved at gange den oprindelige kapacitet med belastningsfaktoren.

For mere information, se artiklen – Load Factor i HashMap i Java med eksempler

Java Collection Interview Spørgsmål til Erfarne

29. Hvad er forskellen mellem Comparable og Comparator i Java?

Java giver to grænseflader til at sortere objekter ved hjælp af datamedlemmer af klassen:

  • Sammenlignelig
  • Komparator

Sammenlignelig

Komparator

Den sammenlignelige grænseflade giver en enkelt sorteringssekvens. Komparator-grænsefladen giver flere sorteringssekvenser.
Den faktiske klasse er modificeret af en sammenlignelig grænseflade Den faktiske klasse ændres ikke af Comparator-grænsefladen.
compareTo() metoden bruges til at sortere elementer. compare() metoden bruges til at sortere elementer.
Sammenlignelig er til stede i pakken java.lang Komparator er til stede i pakken java.util

For mere information, se artiklen – Sammenlignelig vs Comparator i Java

30. Hvad er forskellen mellem fejlsikker og fejlsikker?

Iteratorer i Java bruges til at iterere over samlingsobjekterne. Fail-Fast iteratorer kaster straks ConcurrentModificationException hvis der er en strukturel ændring af samlingen. Strukturel ændring betyder tilføjelse eller fjernelse af ethvert element fra en samling, mens en tråd itererer over denne samling. Iterator på ArrayList og HashMap klasser er nogle eksempler på fejl-hurtig Iterator.

Fejl-hurtig Fejlsikker
ConcurrentModificationException kastes, mens objektet ændres under iterationsprocessen. Ingen undtagelse er kastet
Fail-Fast kræver mindre hukommelse under processen. Fail-Safe iterator kræver mere hukommelse under processen.
Et klonobjekt oprettes ikke under iterationsprocessen. Et klonobjekt eller en kopi oprettes under iterationsprocessen.
Fail-Fast tillader ikke ændringer under iterationsprocessen. Fail-Safe tillader modifikation under iterationsprocessen.
Fail-Fast er hurtigt, Fail-Safe er lidt langsommere end fail fast.

Eksempler:

ArrayList, Vector, HashMap, HashSet osv.

Eksempler:

ConcurrentHashMap, CopyOnWriteArrayList osv.

For mere information, se artiklen – Fail Fast og Fail Safe Iterators i Java

31. Skriv et program til at gentage listen ved hjælp af lambda-udtrykket.

Iteration kan udføres ved hjælp af en lambda udtryk.

Syntaks:

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

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

>

>

Produktion

Geeks for Geeks>

For mere information, se artiklen – Gentag gennem List i Java

32. Hvad er IdentityHashMap?

IdentityHashMap implementerer kortgrænsefladen ved hjælp af Hashtable, og sammenligner nøgler (og værdier) ved hjælp af referencelighed i stedet for objektlighed. Denne klasse implementerer Map-grænsefladen, men den bryder med vilje Maps generelle kontrakt, som kræver, at objekter sammenlignes ved hjælp af equals()-metoden. Denne klasse bruges, når brugeren tillader, at objekter sammenlignes ved hjælp af referencer. Det tilhører java.util-pakken.

For mere information, se artiklen – IdentityHashMap klasse i Java

33. Skriv et program i Java for at vise indholdet af en HashTable ved hjælp af opregning.

Hashtable-klassen implementerer en hash-tabel, som kortlægger nøgler til værdier. Ethvert ikke-nul objekt kan bruges som en nøgle eller som en værdi. For at kunne gemme og hente objekter fra en hashtabel, skal de objekter, der bruges som nøgler, implementere hashCode-metoden og equals-metoden. Nedenfor er programmet til at vise indholdet af en HashTable ved hjælp af opregning:

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

>

>

Produktion

Geeks for Geeks>

34. Skriv et program i java for at få samlingsvisningen af ​​værdierne i et HashMap.

Javas HashMap-klasse har java.util.HashMap.values()-metoden til at skabe samlinger ud fra HashMap-værdier. Det returnerer grundlæggende en samlingsvisning af HashMap-værdier.

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

>

>

Produktion

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

For mere information, se artiklen – HashMap values() Metode i Java

35. Skriv et program for at forbinde to ArrayList til en enkelt ArrayList.

Givet to ArrayLists i Java, er vores opgave at slutte sig til disse ArrayLists.

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

>

>

Produktion

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

For mere information, se artiklen – Slut dig til to ArrayLists i Java

36. Hvordan kan du synkronisere en ArrayList i Java?

Ved at bruge metoden Collections.synchronizedList() kan vi synkronisere vores samlinger i Java. SynchronizedList() returnerer en synkroniseret (trådsikker) liste understøttet af et valg.

Java




hvor mange byer i USA
// 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());> >}> >}> >}> }>

>

>

Produktion

Eat Coffee Code Sleep Repeat>

37. Hvad er en egenskabsklasse i Java?

Egenskabsklassen er en underklasse af Hashtable. Egenskabsklassen gemmer en liste over værdier, hvis nøgle er en streng, og hvis værdi også er en streng. Egenskaber kan definere andre egenskabsklasselister, men standarden er egenskaber.

Funktioner i egenskabsklassen:

  • Ejendom er en underklasse af Hashtable.
  • Egenskabsfilen bruges til at gemme og hente strengdatatype for en liste over værdier, hvor nøglen er en streng, og værdien også er en streng.
  • Hvis den oprindelige egenskabsliste ikke indeholder en bestemt nøgleegenskab, søges der i stedet for standardegenskabslisten.
  • Objekter kan deles af flere tråde uden ekstern synkronisering.
  • Egenskabsklassen kan bruges til at hente systemets egenskaber.

For mere information, se artiklen – Egenskabsklasse i Java

38. Hvad vil der ske, hvis du bruger HashMap i en multithreaded Java-applikation?

I et multi-threaded miljø, hvis flere tråde ændrer kortet strukturelt, såsom tilføjelse, fjernelse eller ændring af tilknytninger, kan den interne datastruktur i HashMap blive beskadiget, og der kan være nogle manglende links, forkerte indtastninger og selve kortet kan blive fuldstændig ubrugelig. Du bør således ikke bruge HashMap i en samtidig applikation; brug i stedet ConcurrentHashMap eller Hashtable, som er trådsikkert. ConcurrentHashMap inkluderer alle Hashtables metoder såvel som fuld samtidighed af hentning og opdateringer.

Hvordan blev ThreadSafeConcurrentHashMap trådsikker?

  • java.util.Concurrent.ConcurrentHashMap-klassen giver trådsikkerhed ved at opdele kortet i segmenter, hvilket tillader, at låsen kun kan tages én gang pr. segment, dvs. én gang for hver tråd.
  • Læseoperationen i ConcurrentHashMap kræver ikke en lås.

For mere information, se artiklen – Hvordan opnår ConcurrentHashMap trådsikkerhed i Java?

39. Hvad vil der ske, hvis to forskellige nøgler af HashMap returnerer den samme hashkode()?

Når to forskellige nøgler af HashMap returnerer den samme hash-kode, ender de i den samme bøtte; derfor vil der opstå kollisioner. I tilfælde af kollision, dvs. indekset for to eller flere knudepunkter er det samme, er knudepunkter forbundet af en linkliste, dvs. den anden knude refereres til af den første knude og den tredje af den anden, og så videre.

For mere information, se artiklen – Internt arbejde af HashMap i Java

40. Hvad er WeakHashMap?

WeakHashMap implementerer kortgrænsefladen. I modsætning til HashMap tillader WeakHashMap affaldsopsamling, selvom det objekt, der er angivet som nøglen, ikke indeholder nogen referencer på trods af at det er forbundet med WeakHashMap. Garbage Collector er med andre ord bedre end WeakHashMap.

For mere information, se artiklen – Hashmap vs WeakHashMap i Java

41. Hvad er UnsupportedOperationException?

I forbindelse med API'er eller listeimplementeringer er UnsupportedOperationException en almindelig undtagelse. Undtagelsen fremkommer, når den anmodede handling ikke kan udføres. Denne klasse er medlem af Java Collections Framework.

Syntaks:

public class UnsupportedOperationException extends RuntimeException>

For mere information, se artiklen – Ikke understøttet OperationException

42. Hvordan laver man en samling skrivebeskyttet i Java?

Oprettelse af en skrivebeskyttet samling involverer at begrænse objektet til kun at hente dataene og ikke tilføje eller fjerne data. Java har forskellige metoder til forskellige samlingstyper såsom unmodifiableCollection(), unmodifiableMap(), ununmodifiableSet(), osv. java.util. Collections-klassen definerer alle metoder. Metoden unmodifiableCollection() opretter en skrivebeskyttet samling. Det kræver en reference til samlingsklassen. Hvis vi har et objekt af Set Interface, kan vi bruge unmodificableSet() at gøre skrivebeskyttet.

For mere information, se artiklen – Hvordan laver man en samling skrivebeskyttet i Java?

43. Forskel mellem PriorityQueue og TreeSet i Java?

Prioritetskø

Træsæt

PriorityQueue kommer i JDK 1.5. TreeSet kommer i JDK 1.4.
Den datastruktur, der bruges af PriorityQueue, er Queue Datastrukturen brugt af TreeSet er indstillet.
Duplikerede elementer er tilladt. Duplikerede elementer er ikke tilladt.
Bortset fra rodelementet følger resten af ​​elementerne ikke nogen bestemt rækkefølge i PriorityQueue. I TreeSet forbliver alle elementer i den sorterede rækkefølge.
Ved at bruge PriorityQueue kan vi hente det største eller mindste element i O(1) tid. TreeSet giver ikke mulighed for at hente det største eller mindste element i O(1) tid, men da de er i sorteret rækkefølge, får det det første eller sidste element i O(1) tid.

For mere information, se artiklen – Forskellen mellem PriorityQueue og TreeSet

44. Hvad er diamantoperatoren i Java?

Diamantoperatorer bruges til at forenkle brugen af ​​generiske stoffer ved oprettelse af objekter og samtidig undgå ukontrollerede advarsler i et program. Da Diamond-operatoren blev introduceret i Java 7, kan vi oprette objektet uden at nævne den generiske type på højre side af udtrykket som vist nedenfor.

Syntaks:

List list = new ArrayList();>

For mere information, se artiklen – Diamantoperatør

45. Hvordan fungerer TreeMap i Java?

Trækort gemmer nøgleværdi-parrene, men TreeMap sorterer nøglerne stigende i stedet for faldende som HashMap. Afhængigt af hvilken konstruktør der bruges, vil TreeMap blive sorteret enten baseret på dets nøgler eller af en komparator. I TreeMap er elementerne sorteret ud fra et rød-sort træ. Et rød-sort træ er et selvbalancerende binært søgetræ, hvor hver node har en ekstra bit, og den bit tolkes ofte som farven (rød eller sort). Disse farver bruges til at sikre, at træet forbliver afbalanceret under indsættelser og sletninger.

Struktur af en node i Java

Struktur af en node i Java

For mere information, se artiklen – Intern drift af TreeMap i Java

46. ​​Liste ned måder at iterere over Map i java?

HashMap-klassen leverer Javas kortgrænseflade ved at gemme data i (nøgle, værdi) par og få adgang til dem med et indeks af en anden type. For at bruge denne klasse er det nødvendigt at importere java.util.HashMap pakke eller dens superklasse.

Der er adskillige måder at iterere over HashMap, hvoraf 5 er anført nedenfor:

  1. Iterer gennem et HashMap EntrySet ved hjælp af Iterators.
  2. Gentag gennem HashMap KeySet ved hjælp af Iterator.
  3. Gentag HashMap ved at bruge for-hver sløjfe.
  4. Iteration gennem et HashMap ved hjælp af Lambda Expressions.
  5. Gå gennem et HashMap ved hjælp af Stream API.

For mere information, se artiklen – Sådan gentages HashMap i Java

47. Hvad er CopyOnWriteArrayList i Java?

CopyOnWriteArrayList i Java

CopyOnWriteArrayList i Java

JDK 1.5 introducerede en forbedret version af ArrayList kaldet CopyOnWriteArrayList, hvor alle ændringer (tilføj, sæt, fjern osv.) implementeres af en ny kopi. Det kan findes i java.util.concurrent. Det er en datastruktur skabt til at blive brugt i et samtidig miljø. I et trådbaseret miljø er CopyOnWriteArrayList beregnet til hyppig læsning og sjældne opdateringer. CopyOnWriteArrayList er en trådsikker version af ArrayList.

For mere information, se artiklen – CopyOnWriteArrayList i Java

48. Hvad er EnumMap i Java?

EnumMap er en implementering af kortgrænsefladen, der er specifik for opregningstyper. EnumMap-klassen er medlem af Java Collections Framework og er ikke synkroniseret. Det udvider AbstractMap og implementerer kortgrænsefladen i java. EnumMap tilhører java.util-pakken.

Syntaks:

offentlig klasse EnumMapudvider AbstractMap implementerer Serializable, Cloneable

// K skal udvide Enum, hvilket håndhæver kravet om, at nøglerne skal være af den specificerede enum type.

Parametre:

  • Nøgleobjekttype
  • Værdi objekttype
EnumMap i Java

EnumMap i Java

For mere information, se artiklen – EnumMap klasse i Java

49. Hvordan fungerer Hashmap internt?

HashMap arbejder efter princippet om hashing. HashMap indeholder et array af Node og Node kan repræsentere en klasse med følgende objekter:

  • int hash
  • K nøgle
  • V værdi
  • Node næste

HashMaps interne funktion:

  • Hashing
  • Spande
  • Indeksberegning i Hashmap

For mere information, se artiklen – Internt arbejde af HashMap i Java

halvtreds. Hvorfor iterator i hashmap betragtes som fejl-hurtig?

fejl-hurtige iteratorer kaster straks samtidige modifikations-undtagelser, hvis en tråd udefra forsøger at ændre den samling, som de gentager. Fejlhurtig-funktionen sikrer, at iteratoren fejler øjeblikkeligt, hvis den opdager, at enhver ændring af samlingen vil føre til unormal adfærd i fremtiden.

Mislykkes hurtigt funktion sikrer, at hvis iterator føler, at ændring af samlingen ville resultere i unormal adfærd på et hvilket som helst tidspunkt i fremtiden, mislykkes den med det samme.

Eksempel:

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

>

>

Produktion:

java konverter char til streng
[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)>

Konklusion

Java samlinger er vigtigt at forstå for Java-udviklere eller programmører, fordi Java er meget udbredt i forskellige industrier. Det er vigtigt for udviklere at have en solid forståelse af kernekoncepter i Java-samlinger. Java er et af de mest brugte sprog i topvirksomheder som f.eks Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazon , osv. For at komme ind i disse virksomheder eller andre it-virksomheder, skal du mestre disse oftest stillede Java Collections interviewspørgsmål for at knække deres Java-baserede online vurdering og tekniske interview.

Hvis du ønsker at øve dig i kodningsspørgsmål, Programmer til indsamling af JAVA kan være en nyttig ressource.

Java Collections Interviewspørgsmål – ofte stillede spørgsmål

1. Hvad er samlinger i Java-interviewspørgsmål?

Samling i Java er en ramme, der bruges til at gemme og manipulere samlinger af objekter.

2. Hvad er de 4 samlingsklasser i Java?

Der er mange samlinger i Java, men ud af dem er de mest brugte samlinger:

  1. ArrayList
  2. LinkedList
  3. HashSet
  4. Stak

3. Kan HashMap have dublerede nøgler?

Nej, HashMap kan ikke have dublerede nøgler. Da HashMap er en af ​​samlingerne i Java, gemmer den værdien i form af nøgleværdi, og hver nøgle har sin egen værdi knyttet til den. Så da ingen nøgle kan have to værdier, betyder det, at vi ikke kan have dublerede nøgler i HashMap.

4. Hvorfor er array ikke en samling?

Arrayet er ikke en samling, det er alt sammen på grund af forskellen i funktionaliteten mellem samlinger og arrays, hvoraf kun få er nævnt nedenfor:

  • Størrelsen af ​​Array'et kan ikke ændres, når den først er deklareret
  • Arrays kan kun indeholde homogene datatypeelementer.
  • Arrayet kan indeholde både primitive datatyper og objekter, hvorimod det i samlinger kun er i stand til at indeholde wrapper-objekter.