Java Collection Framework ble introdusert i JDK 1.2 som inneholder alle samlingsklassene og grensesnittene. Java samling er et rammeverk som gir en mekanisme for å lagre og manipulere samlingen av objekter. Den lar utviklere få tilgang til ferdigpakkede datastrukturer og algoritmer for å manipulere data.
I denne artikkelen har vi dekket de 50 beste Java Collections intervjuspørsmål og svar som dekker alt fra grunnleggende til avanserte Java-samlingskonsepter som navigasjonssamling, WeakHashMap, streams Lambdas etc. Enten du er en ferskere eller en erfaren Java-utvikler , disse Java Collections-intervjuspørsmålene gir deg all selvtilliten du trenger for å klare ditt neste Java-intervju.

Java Collections intervjuspørsmål
Vi har delt de 50 spørsmålene i to deler: Erfarne og ferskinger. La oss begynne med spørsmålene til Freshers.
Innholdsfortegnelse
Java Collection-intervjuspørsmål for ferskinger
1. Hva er samling i Java?
Begrepet samling refererer til en gruppe objekter representert som én enhet. Klasser i Java-samlingsklassehierarkiet er delt inn i to rot grensesnitt: Samling (java.util.Collection) og kart (java.util.Map) . Begreper du vil møte mens du lærer om samlingen i Java:
- Innsamlingsramme: Javas samlingsramme definerer klasser og grensesnitt for å representere grupper av objekter som en enkelt enhet. C++-utviklere kan sammenligne samlingsrammeverket med STL (Standard Template Library) og Container Framework med Collection Framework hvis de kommer fra en C++ bakgrunn.
- Samlingsgrensesnitt: En klasses grensesnitt spesifiserer hva den skal gjøre, ikke hvordan. Det er med andre ord planen for klassen. Dette grensesnittet gir de vanligste metodene for alle samlingsobjekter som er en del av Collection Framework. Alternativt representerer den det enkelte objektet som en helhet.
- Samlingsklasse: Et medlem av Collection Framework, det er en del av java.util-pakken. Samlingsobjektet er utstyrt med mange verktøymetoder i denne klassen.
2. Hva er et rammeverk i Java?
Rammer er sett med klasser og grensesnitt som gir en ferdigstilt arkitektur. Det er ikke nødvendig å definere et rammeverk for å implementere nye funksjoner eller klasser. Som et resultat inkluderer en optimal objektorientert design et rammeverk som inneholder en samling klasser som alle utfører lignende oppgaver. Rammeverket kan brukes på en rekke måter, for eksempel ved å kalle metodene, utvide det og levere tilbakeringinger, lyttere og andre implementeringer. Noen av de populære rammeverkene i java er:
- Vår
- Gå i dvale
- Struts
- Google Web Toolkit (GWT)
- JavaServer Faces (JSF)
3. Hva er forskjellen mellom Array og Collection i Java?
Arrays er en samling av lignende variabler med et vanlig navn i Java. Det er noen forskjeller mellom arrays i Java og C/C++. På den annen side er samlinger grupper av individuelle objekter som danner en enkelt enhet kjent som samlingen av objekter.
| Matriser | Samling |
|---|---|
| Matriser er faste i størrelse, det vil si at når vi oppretter en matrise, kan vi ikke øke eller redusere basert på våre krav. | Kolleksjonen er dyrbar i naturen og er basert på våre krav. Vi kan øke eller redusere størrelsen. |
| Med hensyn til minne anbefales ikke Arrays for bruk. | Med hensyn til minne anbefales samlinger for bruk. |
| Med hensyn til ytelse anbefales Arrays for bruk. | Med hensyn til ytelse anbefales ikke samlinger for bruk. |
| Matriser kan bare inneholde homogene datatypeelementer. | Samling kan inneholde både homogene og heterogene elementer. |
For mer informasjon, se artikkelen – Forskjellen mellom matriser og samlinger i Java
4. Hva er de ulike grensesnittene som brukes i Java Collections Framework?
Samlingen er kjent som roten til samlingshierarkiet. Samlinger representerer grupper av objekter kjent som elementer. Java-plattformen gir ingen direkte implementering av dette grensesnittet, men samlingsgrensesnittet implementeres av Liste- og Set-klasser.
- Samlingsgrensesnitt
- Listegrensesnitt
- Sett grensesnitt
- Køgrensesnitt
- Dekø grensesnitt
- Kartgrensesnitt
5. Forklar hierarkiet til samlingsrammeverket i Java.
Alle klasser og grensesnitt som kreves av samlingsrammeverket er inneholdt i verktøypakken (java. util). Samlingsrammer har et grensesnitt kalt et iterabelt grensesnitt, som lar iteratoren iterere over alle samlinger. I tillegg til dette grensesnittet, fungerer hovedsamlingsgrensesnittet som en rot for samlingsrammeverket. Alle samlingene utvider dette samlingsgrensesnittet og utvider dermed egenskapene til iteratoren og metodene til dette grensesnittet. Følgende figur illustrerer hierarkiet til samlingsrammeverket.
Java-samlingshierarki
6. Hva er fordelene med samlingsrammeverket?
Fordeler med innsamlingsrammeverket: Siden mangelen på et innsamlingsrammeverk ga opphav til ovennevnte sett med ulemper, er følgende fordeler med innsamlingsrammeverket.
- Konsekvent API: API har et grunnleggende sett med grensesnitt som Samling , Sett , Liste , eller Kart , alle klassene (ArrayList, LinkedList, Vector, etc) som implementerer disse grensesnittene har noen felles sett med metoder.
- Reduserer programmeringsinnsats: En programmerer trenger ikke å bekymre seg for utformingen av samlingen, men han kan heller fokusere på den beste bruken i programmet sitt. Derfor har det grunnleggende konseptet med objektorientert programmering (dvs.) abstraksjon blitt implementert.
- Øker programhastighet og kvalitet: Øker ytelsen ved å tilby høyytelsesimplementeringer av nyttige datastrukturer og algoritmer fordi programmereren i dette tilfellet ikke trenger å tenke på den beste implementeringen av en spesifikk datastruktur. Han kan ganske enkelt bruke den beste implementeringen for å drastisk øke ytelsen til algoritmen/programmet hans.
7. Hva er ArrayList i Java?
ArrayList er en del av Java-samlingsrammeverket, og det er en klasse av java.util-pakken. Det gir oss dynamiske arrays i Java. De viktigste fordelene med ArrayList er, hvis vi erklærer en matrise, er det nødvendig å nevne størrelsen, men i ArrayList er det ikke nødvendig å nevne størrelsen på ArrayList hvis du vil nevne størrelsen, så kan du gjøre det.

Bilde av Array List
For mer informasjon, se artikkelen – ArrayList i Java
8. Hva er forskjellen mellom Collection og Collections?
| Samling | Samlinger |
|---|---|
| Det er et grensesnitt. | Det er en bruksklasse. |
| Den brukes til å representere en gruppe individuelle objekter som en enkelt enhet. | Den definerer flere verktøymetoder som brukes til å operere på innsamling. |
| The Collection er et grensesnitt som inneholder en statisk metode siden java8. Grensesnittet kan også inneholde abstrakte og standardmetoder. | Den inneholder kun statiske metoder. |
For mer informasjon, se artikkelen – Samling vs samlinger i Java med eksempel
9. Forskjellen mellom ArrayList og LinkedList i java-samlingsrammeverket?

ArrayList og LinkedList
| ArrayList | LinkedList |
|---|---|
| Denne klassen bruker en dynamisk matrise for å lagre elementene i den. Med introduksjonen av generiske medisiner støtter denne klassen lagring av alle typer objekter. | Denne klassen bruker en dobbeltkoblet liste for å lagre elementene i den. I likhet med ArrayList, støtter denne klassen også lagring av alle typer objekter. |
| Manipulering av ArrayList tar mer tid på grunn av den interne implementeringen. Når vi fjerner et element internt, krysses arrayen og minnebitene forskyves. | Manipulering av LinkedList tar mindre tid sammenlignet med ArrayList fordi, i en dobbeltkoblet liste, er det ikke noe konsept for å skifte minnebitene. Listen krysses og referanselenken endres. |
| Denne klassen implementerer et listegrensesnitt. Derfor fungerer dette som en liste. | Denne klassen implementerer både List-grensesnittet og Deque-grensesnittet. Derfor kan den fungere som en liste og en deque. |
| Denne klassen fungerer bedre når applikasjonen krever lagring av data og tilgang til dem. | Denne klassen fungerer bedre når applikasjonen krever manipulering av de lagrede dataene. |
For mer informasjon, se artikkelen – ArrayList vs LinkedList i Java
10. Hva er en iterator?
Javas samlingsrammeverk bruker iteratorer for å hente elementer én etter én. Denne iteratoren er universell siden den kan brukes med alle typer samlingsobjekter. Ved å bruke Iterator kan vi utføre både lese- og fjerneoperasjoner. Dette er en forbedret versjon av Enumeration med tillegg av å fjerne elementer.
Ved oppregning av elementer i alle Collection framework implementerte grensesnitt, som f.eks Sett , Liste , Kø , Om hva , og alle implementerte klasser av Map, må en Iterator brukes. Den eneste markøren som er tilgjengelig for hele samlingsrammeverket er iteratoren. Ved å bruke iterator()-metoden i samlingsgrensesnittet kan du opprette et iteratorobjekt.
Syntaks:
Iterator itr = c. iterator ();>
Merk: Her er c et hvilket som helst samlingsobjekt. itr er av typen Iterator-grensesnitt og refererer til c.
For mer informasjon, se artikkelen – Iteratorer i Java
11. Hva er forskjellen mellom en iterator og en oppregning?
En stor forskjell mellom iterator og enumerering er at iteratorer har en remove()-metode mens opptellinger ikke har det. Dermed kan vi ved å bruke Iterator manipulere objekter ved å legge til og fjerne dem fra samlinger. Siden opptelling bare kan krysse objekter og hente dem, oppfører den seg som et skrivebeskyttet grensesnitt.
For mer informasjon, se artikkelen – Forskjellen mellom Iterator og Enumeration
12. Hva er forskjellen mellom List og Set i Java
En stor forskjell mellom en liste og et sett er at en liste kan inneholde dupliserte elementer mens et sett bare inneholder unike elementer. Listen er Ordnet og opprettholder rekkefølgen til objektet de er lagt til. Settet er uordnet.
| Liste | Sett |
|---|---|
| Listen er en indeksert sekvens. | Settet er en ikke-indeksert sekvens. |
| Listen tillater dupliserte elementer | Settet tillater ikke dupliserte elementer. |
| Elementer etter posisjon kan nås. | Posisjonstilgang til elementer er ikke tillatt. |
| Flere nullelementer kan lagres. | Null-elementer kan bare lagres én gang. |
| Listeimplementeringer er ArrayList, LinkedList, Vector, Stack | Settimplementeringer er HashSet, LinkedHashSet. |
For mer informasjon, se artikkelen – Forskjellen mellom liste og sett i Java
13. Hva er de beste fremgangsmåtene for Java Collections Framework?
Følgende er noen av de beste fremgangsmåtene når du bruker Java-samlinger:
- Programmer skal skrives som grensesnitt, ikke implementeringer, så vi kan endre implementeringen senere.
- Når det er mulig, bruk Generics for å sikre typesikkerhet og unngå ClassCastExceptions.
- Velge riktig type samling basert på behovet. For eksempel, hvis størrelsen er fast, vil vi kanskje bruke en Array over en ArrayList. Når vi itererer over kartet, bør vi bruke LinkedHashMap. Sett er den beste måten å unngå duplikater på.
- Bruk uforanderlige klasser levert av JDK som nøkler i Map for å unngå implementering av hashCode() og equals().
- For å øke lesbarheten til koden bør vi bruke isEmpty() i stedet for å finne størrelsen på samlingen og sammenligne den med null.
- I stedet for å skrive din egen implementering, bruk samlingsverktøyklassen for å få skrivebeskyttede, synkroniserte eller tomme samlinger i stedet. Det forbedrer gjenbruk av kode samtidig som det resulterer i større stabilitet.
14. Hva er en prioritert kø i Java?
Prioritetskøer brukes til å behandle objekter i henhold til deres prioritet. Køer følger First-In-First-Out-algoritmen, men noen ganger må elementene i køen behandles i henhold til deres prioritet, som er der PriorityQueue kommer inn i bildet. Prioriterte køer er basert på prioriterte hauger.
Elementene i prioritetskøen er ordnet i henhold til den naturlige rekkefølgen, eller av en komparator levert ved køkonstruksjonstid, avhengig av hvilken konstruktør som brukes.

Prioriterte 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-grensesnitt.
15. Hva er forskjellen mellom List, set og map i java?
| Liste | Sett | Kart |
|---|---|---|
| Listegrensesnittet tillater dupliserte elementer | Settet tillater ikke dupliserte elementer. | Kartet tillater ikke dupliserte elementer |
| Listen opprettholder innsettingsrekkefølge. | Settet opprettholder ingen innsettingsrekkefølge. | Kartet opprettholder heller ingen innsettingsrekkefølge. bilde som bakgrunn i css |
| Vi kan legge til et hvilket som helst antall nullverdier. | Men i settet nesten bare én nullverdi. | Kartet tillater maksimalt én enkelt nullnøkkel og et hvilket som helst antall nullverdier. |
| Listeimplementeringsklassene er Array List og LinkedList. | Sett implementeringsklasser er HashSet, LinkedHashSet og TreeSet. | Kartimplementeringsklasser er HashMap, HashTable, TreeMap, ConcurrentHashMap og LinkedHashMap. |
For mer informasjon, se artikkelen – Forskjellen mellom liste, sett og kart i Java
16. Hva er forskjellen mellom Queue og Stack?
| Stable | Kø |
|---|---|
| Stacks fungerer etter LIFO-prinsippet, som betyr at elementet som settes inn sist vil være det første elementet som tas ut. | Køer fungerer etter FIFO-prinsippet, som betyr at elementet som settes inn først vil være det første elementet som tas ut. |
| I stabler skjer innsetting og slettinger kun fra toppen. | I køer skjer innsetting bakerst på listen og sletting skjer fra forsiden av listen. |
| Innsettingsoperasjon kalles push-operasjon. | Innsettingsoperasjon kalles køoperasjon. |
| Sletteoperasjonen kalles popoperasjon. | Sletteoperasjon kalles dekøoperasjon. |
| Toppen av en stabel peker alltid til det siste elementet i listen, som er den eneste pekeren som brukes for å få tilgang til listen. | To pekere opprettholdes for tilgang til køer. Den fremre pekeren peker på det første innsatte elementet, og den bakre pekeren peker på det sist innsatte elementet. |
17. Hva er BlockingQueue i Java?
BlockingQueue-grensesnittet i Java er lagt til i Java 1.5 sammen med forskjellige andre samtidige Utility-klasser som ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList, etc. BlockingQueue-grensesnittet støtter flytkontroll (i tillegg til kø) ved å introdusere blokkering hvis enten BlockingQueue er full eller tom.
En tråd som prøver å sette et element i kø i en hel kø, blokkeres inntil en annen tråd får plass i køen, enten ved å fjerne ett eller flere elementer eller tømme køen helt. På samme måte blokkerer den en tråd som prøver å slette fra en tom kø til noen andre tråder setter inn et element. BlockingQueue godtar ikke en nullverdi. Hvis vi prøver å sette null-elementet i kø, kaster det NullPointerException.
Bruk av BlockingQueue

Blokkeringskø i Java
Hierarkiet til BlockingQueue

Hierarki for blokkeringskø i Java
Erklæring:
public interface BlockingQueue extends Queue>
Her, OG er typen elementer som er lagret i samlingen.
For mer informasjon, se artikkelen – BlockingQueue Interface i Java
18. Hva er hashCode()?

Bilde for å demonstrere Java Hash Code
hashCode()-metoden returnerer hashcode-verdien som et heltall. Den er definert i Java Object-klassen som beregner hash-verdiene til gitte inngangsobjekter. Hashcode-verdi brukes mest i hashing-baserte samlinger som HashMap, HashSet, HashTable….osv. Denne metoden må overstyres i hver klasse som overstyrer equals()-metoden.
Syntaks:
public int hashCode() // This method returns the hash code value // for the object on which this method is invoked.>
For mer informasjon, se artikkelen – equals() og hashCode()-metoder i Java
19. Skille mellom ArrayList og Vector i Java Collection Framework.
I samlingsintervjuer stilles dette spørsmålet ofte; Imidlertid er Vector synkronisert mens ArrayList ikke er det. ArrayList er raskere enn Vector. ArrayLists Array-størrelse økes med 50 % ved behov, mens Vectors kapasitet dobles når det trengs.
når slutter q1

Array List vs Vector i java
| ArrayList | Vektor |
|---|---|
| ArrayList er ikke synkronisert | Vektoren er synkronisert. |
| Størrelsen på ArrayList økes med opptil 50 % av gjeldende matrisestørrelse hvis antallet elementer overskrider kapasiteten. | Størrelsen på ArrayList økes med opptil 100 % av gjeldende matrisestørrelse hvis antall elementer overskrider kapasiteten. |
| ArrayList er rask fordi den er ikke-synkronisert. | Vektor er tregere fordi den er synkronisert. |
| Iteratorgrensesnittet brukes til å krysse elementene | Et iteratorgrensesnitt eller Enumeration kan brukes til å krysse vektoren. |
For mer informasjon, se artikkelen – Vector vs ArrayList i Java
20. Skille mellom Iterator og ListIterator.
| Iterator | ListIterator |
|---|---|
| Kan krysse elementer som er tilstede i samlingen bare i retning fremover. | Kan krysse elementer som finnes i samlingen både fremover og bakover. |
| Hjelper å krysse kart, liste og sett. | Kan bare krysse List og ikke de to andre. |
| Indekser kan ikke oppnås ved å bruke Iterator. | Den har metoder som nextIndex() og previousIndex() for å hente indekser av elementer når som helst mens du går gjennom listen. |
| Kan ikke endre eller erstatte elementer som finnes i samlingen | Vi kan modifisere eller erstatte elementer ved hjelp av set(E e) |
For mer informasjon, se artikkelen – Forskjellen mellom en iterator og ListIterator
21. Hva er forskjellen mellom en iterator og en oppregning?
Iterator: Det er en universell iterator som vi kan bruke den på ethvert samlingsobjekt. Ved å bruke en Iterator kan vi utføre både lese- og fjerneoperasjoner.
Syntaks:
// Here 'c' is any Collection object. itr is of // type Iterator interface and refers to 'c' Iterator itr = c.iterator();>
Oppregning: Enumeration (eller enum) er en brukerdefinert datatype. Det brukes hovedsakelig til å tildele navn til integrerte konstanter, navnene gjør et program lett å lese og vedlikeholde.
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 | Oppregning |
|---|---|
| Iteratoren er en universell markør da den kan brukes for alle samlingsklassene. | Opptelling er ikke en universell markør da den bare gjelder for eldre klasser. |
| Iteratoren har remove()-metoden. | Opptelling har ikke remove()-metoden. |
| Iteratoren kan gjøre endringer (f.eks. ved å bruke remove()-metoden som fjerner elementet fra samlingen under traversering). | Opptellingsgrensesnittet fungerer som et skrivebeskyttet grensesnitt, man kan ikke gjøre noen endringer i samlingen mens man krysser elementene i samlingen. |
| Iterator er ikke et eldre grensesnitt. Iterator kan brukes til å krysse HashMap, LinkedList, ArrayList, HashSet, TreeMap og TreeSet. | Enumeration er et eldre grensesnitt som brukes til å krysse Vector og Hashtable. |
For mer informasjon, se artikkelen – Forskjellen mellom Iterator og Enumeration
22. Hva er funksjonene til Java Hashmap?
HashMap ligner på HashTable, men det er usynkronisert. Det lar oss også lagre null-nøklene, men det skal bare være ett null-nøkkelobjekt og det kan være et hvilket som helst antall nullverdier. Denne klassen gir ingen garantier for rekkefølgen på kartet. For å bruke denne klassen og dens metoder, må du importere java.util. HashMap pakken eller dens superklasse.

HashMap i Java
Syntaks:
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable>
Parametere: Det tar to parametere, nemlig som følger:
- Typen nøkler som vedlikeholdes av dette kartet (K)
- Typen kartlagte verdier (V)
For mer informasjon, se artikkelen – HashMap i Java med eksempler
23. Hva er samlingsgrensesnitt?
De Samling grensesnittet er medlem av Java Collections Framework. Det er en del av java.util pakke. Det er et av rotgrensesnittene til samlingshierarkiet. Samling-grensesnittet er ikke direkte implementert av noen klasse. Imidlertid implementeres den indirekte via undertypene eller undergrensesnittene som List, Queue og Set.
For eksempel, HashSet-klassen implementerer Set-grensesnittet som er et undergrensesnitt av Collection-grensesnittet. Hvis en samlingsimplementering ikke implementerer en bestemt operasjon, bør den definere den tilsvarende metoden for å kaste UnsupportedOperationException.
Samlingens hierarki:

Samlingsgrensesnitt i Java
24. Forklar listegrensesnittet.

Klassegrensesnitt i Java
I Java lar List-grensesnittet brukeren lagre en ordnet samling av objekter. Listen er barnegrensesnittet til Collection. I Samling er en liste en ordnet samling av objekter som kan ha dupliserte verdier. Siden List bevarer innsettingsrekkefølgen, tillater den posisjonstilgang og innsetting, som også tillater dupliserte verdier.
Syntaks:
public interface List extends Collection ;>
Dette listegrensesnittet er implementert av forskjellige klasser som ArrayList, Vector, Stack, etc. Siden alle underklassene implementerer listen, kan vi instansiere et listeobjekt med hvilken som helst av disse klassene.
Eksempel:
List al = ny ArrayList ();
Liste ll = ny LinkedList ();
Liste v = ny vektor ();Hvor T er typen av objektet

Array List i Java
Klassene som implementerer List-grensesnittet er som følger:
- ArrayList
- LinkedList
- Vektor
- Stable
25. Skriv et program for å konvertere en gitt matrise til en samling med asList()-metoden.
For å konvertere array-baserte data til samlingsbaserte kan vi bruke java.util.Arrays klasse. Denne klassen gir en statisk metode asList(T...a) som konverterer matrisen til en samling.
Java
Last ned 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);> >}> }> |
>
>Produksjon
Array input: [Kamlesh, Abhay, Abhishek, Shivansh] Converted elements: [Kamlesh, Abhay, Abhishek, Shivansh]>
26. Skille mellom HashSet og HashMap
| HashSet | HashMap |
|---|---|
| HashSet implementerer Set-grensesnittet | HashMap implementerer kartgrensesnittet |
| Ingen duplikater er tillatt | Ja duplikatverdier er tillatt, men ingen duplikatnøkkel er tillatt |
| Dummy-verdier er tillatt i HashSet. | Ingen dummy-verdier er tillatt i HashMap. |
| Et enkelt objekt kreves under en tilleggsoperasjon | 2 objekter kreves under en tilleggsoperasjon |
| Hastigheten er relativt langsommere enn HashMap | Hastigheten er relativt raskere enn HashSet på grunn av hashing-teknikken som har blitt brukt her. |
| Ha en enkelt nullverdi | Enkelt nullnøkkel og et hvilket som helst antall nullverdier |
| Add()-metoden brukes for innsettingen | Put ()-metoden brukes for innsetting. |
For mer informasjon, se artikkelen – Forskjellen mellom HashMap og HashSet
27. Skille mellom HashSet og HashTable.
| HashSet | HashTable |
|---|---|
| HashSet tillater NULL-elementer | HashTable tillater ikke NULL-elementer. |
| Objekter som du setter inn i HashSet er ikke garantert satt inn i samme rekkefølge. Objekter settes inn basert på deres hash-kode. LinkedHashSet kan brukes til å opprettholde orden. | HashTable opprettholder ikke innsettingsrekkefølge. |
| HashSet er ikke synkronisert, men det kan synkroniseres eksternt. | HashTable er synkronisert. |
| add()-metoden brukes til å sette inn i HashSet | put()-metoden brukes til å sette inn i HashTable |
28. Hva er standardstørrelsen på belastningsfaktoren i den hashing-baserte samlingen?
Når belastningsfaktoren øker, øker kapasiteten slik at den operasjonelle kompleksiteten til HashMap forblir O(1) hvis forholdet mellom det nåværende elementet og den opprinnelige kapasiteten krysser terskelen. Betydningen av operasjonell kompleksitet av O(1) betyr at gjenfinnings- og innsettingsoperasjonene tar konstant tid. Standard belastningsfaktorstørrelse er 0,75 . Standardkapasiteten beregnes ved å multiplisere startkapasiteten med belastningsfaktoren.
For mer informasjon, se artikkelen – Lastfaktor i HashMap i Java med eksempler
Java Collection intervjuspørsmål for erfarne
29. Hva er forskjellen mellom Comparable og Comparator i Java?
Java gir to grensesnitt for å sortere objekter ved hjelp av datamedlemmer i klassen:
- Sammenlignbar
- Komparator
| Sammenlignbar | Komparator |
|---|---|
| Det sammenlignbare grensesnittet gir én enkelt sorteringssekvens. | Komparator-grensesnittet gir flere sorteringssekvenser. |
| Den faktiske klassen er modifisert av et sammenlignbart grensesnitt | Den faktiske klassen endres ikke av Comparator-grensesnittet. |
| compareTo()-metoden brukes til å sortere elementer. | compare()-metoden brukes til å sortere elementer. |
| Comparable finnes i pakken java.lang | Komparator er til stede i pakken java.util |
For mer informasjon, se artikkelen – Sammenlignbar vs Comparator i Java
30. Hva er forskjellen mellom feilsikker og feilsikker?
Iteratorer i Java brukes til å iterere over samlingsobjektene. Fail-Fast iteratorer kaster umiddelbart ConcurrentModificationException hvis det er en strukturell modifikasjon av samlingen. Strukturell modifikasjon betyr å legge til eller fjerne et hvilket som helst element fra en samling mens en tråd itererer over den samlingen. Iterator på ArrayList- og HashMap-klasser er noen eksempler på mislykket Iterator.
| Fail-Fast | Fail-Safe |
|---|---|
| ConcurrentModificationException blir kastet mens du endrer objektet under iterasjonsprosessen. | Ingen unntak er kastet |
| Fail-Fast trenger mindre minne under prosessen. | Fail-Safe iterator krever mer minne under prosessen. |
| Et kloneobjekt opprettes ikke under iterasjonsprosessen. | Et kloneobjekt eller en kopi opprettes under iterasjonsprosessen. |
| Fail-Fast tillater ikke modifikasjon under iterasjonsprosessen. | Fail-Safe tillater modifikasjon under iterasjonsprosessen. |
| Fail-Fast er raskt, | Fail-Safe er litt tregere enn fail fast. |
| Eksempler: ArrayList, Vector, HashMap, HashSet, etc. | Eksempler: ConcurrentHashMap, CopyOnWriteArrayList, etc. |
For mer informasjon, se artikkelen – Fail Fast og Fail Safe Iterators i Java
31. Skriv et program for å iterere listen ved å bruke lambda-uttrykket.
Iterasjon kan gjøres ved å bruke en lambda uttrykk.
Syntaks:
list_name.forEach(variable->{//kodeblokk})> 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); });> >}> }> |
>
>Produksjon
Geeks for Geeks>
For mer informasjon, se artikkelen – Iterer gjennom List i Java
32. Hva er IdentityHashMap?
IdentityHashMap implementerer kartgrensesnittet ved å bruke Hashtable, og sammenligner nøkler (og verdier) ved å bruke referanselikhet i stedet for objektlikhet. Denne klassen implementerer Map-grensesnittet, men den bryter med hensikt Maps generelle kontrakt, som krever at objekter sammenlignes med equals()-metoden. Denne klassen brukes når brukeren lar objekter sammenlignes ved hjelp av referanser. Den tilhører java.util-pakken.
For mer informasjon, se artikkelen – IdentityHashMap-klassen i Java
33. Skriv et program i Java for å vise innholdet i en HashTable ved å bruke oppregning.
Hashable-klassen implementerer en hash-tabell, som kartlegger nøkler til verdier. Ethvert ikke-null objekt kan brukes som en nøkkel eller som en verdi. For å lykkes med å lagre og hente objekter fra en hashtabell, må objektene som brukes som nøkler implementere hashCode-metoden og equals-metoden. Nedenfor er programmet for å vise innholdet i en HashTable ved å bruke oppregning:
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());> >}> >}> }> |
>
>Produksjon
Geeks for Geeks>
34. Skriv et program i java for å få samlingsvisningen av verdiene som finnes i et HashMap.
Javas HashMap-klasse har java.util.HashMap.values()-metoden for å lage samlinger av HashMap-verdier. Den returnerer i utgangspunktet en samlingsvisning av HashMap-verdier.
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());> >}> }> |
>
>Produksjon
Initial Mappings are: {0=Welcome, 1=to, 2=Geeks, 3=4, 4=Geeks} The collection is: [Welcome, to, Geeks, 4, Geeks]> For mer informasjon, se artikkelen – HashMap values() Metode i Java
35. Skriv et program for å slå sammen to ArrayList til en enkelt ArrayList.
Gitt to ArrayLists i Java, er vår oppgave å bli med 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);> >}> }> |
>
>Produksjon
ArrayList 1: [Geeks, For, ForGeeks] ArrayList 2: [GeeksForGeeks, A computer portal] Joined ArrayLists: [Geeks, For, ForGeeks, GeeksForGeeks, A computer portal]>
For mer informasjon, se artikkelen – Bli med to ArrayLists i Java
36. Hvordan kan du synkronisere en ArrayList i Java?
Ved å bruke Collections.synchronizedList()-metoden kan vi synkronisere samlingene våre i Java. SynchronizedList() returnerer en synkronisert (trådsikker) liste støttet av et utvalg.
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());> >}> >}> >}> }> |
>
>Produksjon
Eat Coffee Code Sleep Repeat>
37. Hva er en egenskapsklasse i Java?
Egenskapsklassen er en underklasse av Hashtable. Egenskapsklassen lagrer en liste over verdier hvis nøkkel er en streng og hvis verdi også er en streng. Egenskaper kan definere andre egenskaper klasselister, men standard er egenskaper.
Funksjoner i egenskapsklassen:
- Eiendom er en underklasse av Hashtable.
- Egenskapsfilen brukes til å lagre og hente strengdatatype for en liste med verdier der nøkkelen er en streng og verdien også er en streng.
- Hvis den opprinnelige egenskapslisten ikke inneholder en bestemt nøkkelegenskap, vil standardegenskapslisten søkes i stedet.
- Objekter kan deles av flere tråder uten ekstern synkronisering.
- Egenskapsklassen kan brukes til å hente frem egenskapene til systemet.
For mer informasjon, se artikkelen – Egenskapsklasse i Java
38. Hva vil skje hvis du bruker HashMap i en multithreaded Java-applikasjon?
I et flertrådsmiljø, hvis flere tråder endrer kartet strukturelt, for eksempel å legge til, fjerne eller endre tilordninger, kan den interne datastrukturen til HashMap bli ødelagt og det kan være noen manglende koblinger, feil oppføringer og selve kartet kan bli helt ubrukelig. Dermed bør du ikke bruke HashMap i en samtidig applikasjon; bruk i stedet ConcurrentHashMap eller Hashtable som er trådsikkert. ConcurrentHashMap inkluderer alle Hashtables metoder samt full samtidighet av henting og oppdateringer.
Hvordan ble ThreadSafeConcurrentHashMap trådsikker?
- java.util.Concurrent.ConcurrentHashMap-klassen gir trådsikkerhet ved å dele kartet inn i segmenter, noe som gjør at låsen kun kan tas én gang per segment, dvs. én gang for hver tråd.
- Leseoperasjonen i ConcurrentHashMap krever ingen lås.
For mer informasjon, se artikkelen – Hvordan oppnår ConcurrentHashMap trådsikkerhet i Java?
39. Hva vil skje hvis to forskjellige nøkler til HashMap returnerer samme hashkode()?
Når to forskjellige nøkler til HashMap returnerer samme hash-kode, vil de havne i samme bøtte; derfor vil det oppstå kollisjoner. i tilfelle av kollisjon, dvs. indeksen til to eller flere noder er den samme, er noder forbundet med en lenkeliste, dvs. den andre noden refereres til av den første noden og den tredje av den andre, og så videre.
For mer informasjon, se artikkelen – Intern bruk av HashMap i Java
40. Hva er WeakHashMap?
WeakHashMap implementerer kartgrensesnittet. I motsetning til HashMap, tillater WeakHashMap søppelinnsamling selv om objektet som er spesifisert som nøkkel, ikke inneholder noen referanser til tross for at det er assosiert med WeakHashMap. Garbage Collector er med andre ord bedre enn WeakHashMap.
For mer informasjon, se artikkelen – Hashmap vs WeakHashMap i Java
41. Hva er UnsupportedOperationException?
I sammenheng med APIer eller listeimplementeringer er UnsupportedOperationException et vanlig unntak. Unntaket blir gitt når den forespurte operasjonen ikke kan utføres. Denne klassen er medlem av Java Collections Framework.
Syntaks:
public class UnsupportedOperationException extends RuntimeException>
For mer informasjon, se artikkelen – UnsupportedOperationException
42. Hvordan lage en samling skrivebeskyttet i Java?
Å opprette en skrivebeskyttet samling innebærer å begrense objektet til kun å hente dataene og ikke legge til eller fjerne data. Java har forskjellige metoder for forskjellige samlingstyper som unmodifiableCollection(), unmodifiableMap(), ununmodifiableSet(), etc. java.util. Collections-klassen definerer alle metoder. Metoden unmodifiableCollection() oppretter en skrivebeskyttet samling. Det krever en referanse til samlingsklassen. Hvis vi har et objekt av Set Interface, kan vi bruke ununmodifiableSet() for å gjøre skrivebeskyttet.
For mer informasjon, se artikkelen – Hvordan lage en samling skrivebeskyttet i Java?
43. Forskjellen mellom PriorityQueue og TreeSet i Java?
| Prioritetskø | Tresett |
|---|---|
| PriorityQueue kommer i JDK 1.5. | TreeSet kommer i JDK 1.4. |
| Datastrukturen som brukes av PriorityQueue er Queue | Datastrukturen som brukes av TreeSet er satt. |
| Dupliserte elementer er tillatt. | Dupliserte elementer er ikke tillatt. |
| Bortsett fra rotelementet, følger ikke resten av elementene noen spesiell rekkefølge i PriorityQueue. | I TreeSet forblir alle elementene i sortert rekkefølge. |
| Ved å bruke PriorityQueue kan vi hente det største eller minste elementet i O(1) tid. | TreeSet gir ikke en måte å hente det største eller minste elementet i O(1) tid, men siden de er i sortert rekkefølge, får det det første eller siste elementet i O(1) tid. |
For mer informasjon, se artikkelen – Forskjellen mellom PriorityQueue og TreeSet
44. Hva er diamantoperatøren i Java?
Diamantoperatorer brukes for å forenkle bruken av generikk når du oppretter objekter, samtidig som ukontrollerte advarsler unngås i et program. Da Diamond-operatoren ble introdusert i Java 7, kan vi lage objektet uten å nevne den generiske typen på høyre side av uttrykket som vist nedenfor.
Syntaks:
List list = new ArrayList();>
For mer informasjon, se artikkelen – Diamantoperatør
45. Hvordan fungerer TreeMap i Java?
Trekart lagrer nøkkelverdi-parene, men TreeMap sorterer nøklene stigende i stedet for synkende som HashMap. Avhengig av hvilken konstruktør som brukes, vil TreeMap sorteres enten basert på nøklene, eller av en komparator. I TreeMap er elementene sortert basert på et rød-svart tre. Et rød-svart tre er et selvbalanserende binært søketre hvor hver node har en ekstra bit, og den biten tolkes ofte som fargen (rød eller svart). Disse fargene brukes for å sikre at treet forblir balansert under innsettinger og slettinger.

Strukturen til en node i Java
For mer informasjon, se artikkelen – Intern bruk av TreeMap i Java
46. Liste ned måter å iterere over kart i java?
HashMap-klassen gir Javas kartgrensesnitt ved å lagre data i (nøkkel, verdi) par og få tilgang til dem med en indeks av en annen type. For å bruke denne klassen er det nødvendig å importere java.util.HashMap pakken eller dens superklasse.
Det er mange måter å iterere over HashMap, hvorav 5 er oppført nedenfor:
- Iterer gjennom et HashMap EntrySet ved å bruke Iterators.
- Iterer gjennom HashMap KeySet ved hjelp av Iterator.
- Iterer HashMap ved å bruke for hver sløyfe.
- Iterering gjennom et HashMap ved hjelp av Lambda Expressions.
- Gå gjennom en HashMap ved hjelp av Stream API.
For mer informasjon, se artikkelen – Hvordan gjenta HashMap i Java
47. Hva er CopyOnWriteArrayList i Java?

CopyOnWriteArrayList i Java
JDK 1.5 introduserte en forbedret versjon av ArrayList kalt CopyOnWriteArrayList, der alle modifikasjoner (legg til, sett, fjern osv.) implementeres av en ny kopi. Den finnes i java.util.concurrent. Det er en datastruktur laget for å brukes i et samtidig miljø. I et trådbasert miljø er CopyOnWriteArrayList ment for hyppig lesing og sjelden oppdatering. CopyOnWriteArrayList er en trådsikker versjon av ArrayList.
For mer informasjon, se artikkelen – CopyOnWriteArrayList i Java
48. Hva er EnumMap i Java?
EnumMap er en implementering av kartgrensesnittet spesifikt for oppregningstyper. EnumMap-klassen er medlem av Java Collections Framework og er ikke synkronisert. Den utvider AbstractMap og implementerer kartgrensesnittet i java. EnumMap tilhører java.util-pakken.
Syntaks:
offentlig klasse EnumMap
utvider AbstractMap implementerer Serializable, Cloneable // K må utvide Enum, som håndhever kravet om at nøklene må være av den angitte enum-typen.
Parametere:
- Nøkkelobjekttype
- Verdiobjekttype

EnumMap i Java
For mer informasjon, se artikkelen – EnumMap-klassen i Java
49. Hvordan fungerer Hashmap internt?
HashMap fungerer etter prinsippet om hashing. HashMap inneholder en rekke Node og Node kan representere en klasse som har følgende objekter:
- int hash
- K nøkkel
- V-verdi
- Node neste
Den interne funksjonen til HashMap:
- Hashing
- Bøtter
- Indeksberegning i Hashmap
For mer informasjon, se artikkelen – Intern bruk av HashMap i Java
femti. Hvorfor iterator i hashmap regnes som mislykket?
mislykkede iteratorer kaster umiddelbart samtidige modifikasjonsunntak hvis en tråd utenfra prøver å endre samlingen de itererer på. Feil-rask-funksjonen sikrer at iteratoren mislykkes umiddelbart hvis den oppdager at enhver endring av samlingen vil føre til unormal oppførsel i fremtiden.
Mislykkes raskt funksjonen sikrer at hvis iterator føler at endring av samlingen vil resultere i unormal oppførsel på et hvilket som helst tidspunkt i fremtiden, mislykkes den umiddelbart.
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>);> >}> >}> >}> }> |
>
>
Produksjon:
hvordan returnere en array java
[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)>
Konklusjon
Java-samlinger er viktig å forstå for Java-utviklere eller programmerere fordi Java er mye brukt i ulike bransjer. Det er viktig for utviklere å ha en solid forståelse av kjernekonseptene i Java-samlinger. Java er et av de mest brukte språkene i toppbedrifter som f.eks Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazon , osv. For å komme inn i disse selskapene eller andre IT-selskaper, må du mestre disse oftest stilte Java Collections-intervjuspørsmålene for å knekke deres Java-baserte nettbaserte vurdering og tekniske intervju.
Hvis du ønsker å øve på kodingsspørsmål, kan du JAVA-samlingsprogrammer kan være en nyttig ressurs.
Java Collections Intervjuspørsmål – Vanlige spørsmål
1. Hva er samlinger i Java-intervjuspørsmål?
Samling i Java er et rammeverk som brukes til å lagre og manipulere samlinger av objekter.
2. Hva er de 4 samlingsklassene i Java?
Det er mange samlinger i Java, men av dem er de mest brukte samlingene:
- ArrayList
- LinkedList
- HashSet
- Stable
3. Kan HashMap ha dupliserte nøkler?
Nei, HashMap kan ikke ha dupliserte nøkler. Siden HashMap er en av samlingene i Java, lagrer den verdien i form av nøkkelverdi og hver nøkkel har sin egen verdi knyttet til den. Så, siden ingen nøkkel kan ha to verdier, betyr det at vi ikke kan ha dupliserte nøkler i HashMap.
4. Hvorfor er array ikke en samling?
Matrisen er ikke en samling, det er alt på grunn av forskjellen i funksjonaliteten mellom samlinger og matriser, hvorav få er nevnt nedenfor:
- Størrelsen på matrisen kan ikke endres når den først er deklarert
- Matriser kan bare inneholde homogene datatypeelementer.
- Matrisen kan inneholde både primitive datatyper og objekter, mens den i samlinger bare er i stand til å holde innpakningsobjekter.