Java Collection Framework esiteltiin vuonna JDK 1.2 joka sisältää kaikki kokoelmaluokat ja rajapinnat. Java-kokoelma on kehys, joka tarjoaa mekanismin objektien kokoelman tallentamiseen ja käsittelemiseen. Sen avulla kehittäjät voivat käyttää valmiiksi pakattuja tietorakenteita ja algoritmeja tietojen käsittelyä varten.
Tässä artikkelissa olemme käsitelleet 50 parasta Java-kokoelmien haastattelukysymykset ja vastaukset jotka kattavat kaiken perustason Java-kokoelmakonsepteista edistyneisiin Java-kokoelmakonsepteihin, kuten navigointikokoelmaan, WeakHashMapiin, striimiin Lambdaan jne. Olitpa sitten tuoreempi tai an kokenut Java-kehittäjä , nämä Java Collections -haastattelukysymykset antavat sinulle kaiken varmuuden, jota tarvitset seuraavaan Java-haastatteluun.

Java-kokoelmien haastattelukysymykset
Olemme jakaneet 50 kysymystä kahteen osaan: Kokeneet ja Freshers. Aloitetaan Freshersin kysymyksillä.
Sisällysluettelo
Java-kokoelman haastattelukysymyksiä fuksilaisille
1. Mikä on kokoelma Javassa?
Termi kokoelma viittaa objektiryhmään, joka on esitetty yhtenä yksikkönä. Java-kokoelman luokkahierarkian luokat on jaettu kahteen osaan juuri käyttöliittymät: Kokoelma (java.util.Collection) ja kartta (java.util.Map) . Termit, joita kohtaat oppiessasi kokoelmasta Java:
- Kokoelmakehys: Java's Collection Framework määrittelee luokat ja rajapinnat objektiryhmien esittämiseksi yhtenä kokonaisuutena. C++-kehittäjät voivat verrata Collection-kehystä STL (Standard Template Library) ja Container Framework Collection Frameworkin kanssa, jos ne tulevat C++-taustasta.
- Kokoelman käyttöliittymä: Luokan käyttöliittymä määrittää, mitä sen pitäisi tehdä, ei miten. Toisin sanoen se on luokan suunnitelma. Tämä käyttöliittymä tarjoaa yleisimmät menetelmät kaikille Collection Frameworkiin kuuluville kokoelmaobjekteille. Vaihtoehtoisesti se edustaa yksittäistä kohdetta kokonaisuutena.
- Kokoelmaluokka: Collection Frameworkin jäsen, se on osa java.util-pakettia. Keräysobjekti sisältää monia apumenetelmiä tässä luokassa.
2. Mikä on kehys Javassa?
Kehykset ovat joukkoja luokat ja käyttöliittymät jotka tarjoavat valmiin arkkitehtuurin. Kehystä ei tarvitse määritellä uusien ominaisuuksien tai luokkien toteuttamiseksi. Tämän seurauksena optimaalinen oliopohjainen suunnittelu sisältää kehyksen, joka sisältää joukon luokkia, jotka kaikki suorittavat samanlaisia tehtäviä. Kehystä voidaan käyttää useilla tavoilla, kuten kutsumalla sen menetelmiä, laajentamalla sitä ja toimittamalla takaisinkutsut, kuuntelijat ja muut toteutukset. Jotkut suosituimmista javan kehyksistä ovat:
- kevät
- Lepotila
- Tuet
- Google Web Toolkit (GWT)
- JavaServer Faces (JSF)
3. Mitä eroa on Arraylla ja Collectionilla Javassa?
Taulukot ovat kokoelma samantyyppisiä muuttujia, joilla on yhteinen nimi Javassa. Java- ja C/C++-taulukoiden välillä on joitain eroja. Toisaalta kokoelmat ovat yksittäisten objektien ryhmiä, jotka muodostavat yhden kokonaisuuden, joka tunnetaan objektien kokoelmana.
| Taulukot | Kokoelma |
|---|---|
| Taulukot ovat kooltaan kiinteät, joten kun luomme taulukon, emme voi lisätä tai pienentää tarpeidemme perusteella. | Kokoelma on luonteeltaan kasvatettava ja perustuu tarpeisiimme. Voimme suurentaa tai pienentää kokoa. |
| Muistin osalta taulukoita ei suositella käytettäväksi. | Muistin osalta kokoelmia suositellaan käytettäväksi. |
| Suorituskyvyn suhteen taulukoita suositellaan käytettäväksi. | Suorituskyvyn osalta kokoelmia ei suositella käytettäväksi. |
| Taulukot voivat sisältää vain homogeenisia tietotyyppejä. | Kokoelmassa voi olla sekä homogeenisia että heterogeenisiä elementtejä. |
Lisätietoja saat artikkelista - Ero taulukoiden ja kokoelmien välillä Javassa
4. Mitä erilaisia käyttöliittymiä käytetään Java Collections Frameworkissa?
Kokoelma tunnetaan kokoelmahierarkian juurena. Kokoelmat edustavat elementeinä tunnettuja objektiryhmiä. Java-alusta ei tarjoa suoraa toteutusta tälle rajapinnalle, mutta Collection-rajapinta on toteutettu List- ja Set-luokilla.
- Kokoelman käyttöliittymä
- Lista käyttöliittymä
- Aseta käyttöliittymä
- Jonon käyttöliittymä
- Poista jonosta käyttöliittymä
- Karttakäyttöliittymä
5. Selitä Javan Collection-kehyksen hierarkia.
Kaikki kokoelmakehyksen vaatimat luokat ja rajapinnat sisältyvät apuohjelmaan (java. util). Kokoelmakehyksessä on käyttöliittymä, jota kutsutaan iteroitavaksi käyttöliittymäksi, jonka avulla iteraattori voi iteroida kaikkia kokoelmia. Tämän käyttöliittymän lisäksi pääkokoelmarajapinta toimii kokoelmakehyksen juurina. Kaikki kokoelmat laajentavat tätä kokoelmarajapintaa laajentaen siten iteraattorin ominaisuuksia ja tämän rajapinnan menetelmiä. Seuraava kuva havainnollistaa kokoelmakehyksen hierarkiaa.
Java-kokoelmahierarkia
6. Mitkä ovat kokoelman Frameworkin edut?
Kokoelmakehyksen edut: Koska keräyskehyksen puuttuminen aiheutti edellä mainitut haitat, seuraavat ovat keräyskehyksen edut.
- Johdonmukainen API: API:lla on perusjoukko rajapintoja, kuten Kokoelma , Aseta , Lista , tai Kartta , kaikilla luokilla (ArrayList, LinkedList, Vector jne), jotka toteuttavat nämä rajapinnat, on jonkin verran yhteinen menetelmäsarja.
- Vähentää ohjelmointityötä: Ohjelmoijan ei tarvitse huolehtia kokoelman suunnittelusta, vaan hän voi keskittyä sen parhaaseen käyttöön ohjelmassaan. Siksi olio-ohjelmoinnin (eli abstraktion) peruskonsepti on onnistuneesti toteutettu.
- Lisää ohjelman nopeutta ja laatua: Lisää suorituskykyä tarjoamalla tehokkaita toteutuksia hyödyllisistä tietorakenteista ja algoritmeista, koska tässä tapauksessa ohjelmoijan ei tarvitse ajatella tietyn tietorakenteen parasta toteutusta. Hän voi yksinkertaisesti käyttää parasta toteutusta parantaakseen merkittävästi algoritminsa/ohjelmansa suorituskykyä.
7. Mikä on ArrayList Javassa?
ArrayList on osa Java-kokoelmakehystä ja se on java.util-paketin luokka. Se tarjoaa meille dynaamisia taulukoita Javassa. ArrayListin tärkeimmät edut ovat, että jos ilmoitamme taulukon, sen koko on mainittava, mutta ArrayListissä ei tarvitse mainita ArrayListin kokoa, jos haluat mainita koon, niin voit tehdä sen.

Kuva Array Listista
Lisätietoja saat artikkelista - ArrayList Javassa
8. Mitä eroa on kokoelmalla ja kokoelmalla?
| Kokoelma | Kokoelmat |
|---|---|
| Se on käyttöliittymä. | Se on hyödyllisyysluokka. |
| Sitä käytetään edustamaan yksittäisten objektien ryhmä yhtenä yksikkönä. | Se määrittelee useita apumenetelmiä, joita käytetään keräämiseen. |
| Kokoelma on käyttöliittymä, joka sisältää staattisen menetelmän java8: sta lähtien. Käyttöliittymä voi sisältää myös abstrakteja ja oletusmenetelmiä. | Se sisältää vain staattisia menetelmiä. |
Lisätietoja saat artikkelista - Kokoelma vs kokoelmat Javassa esimerkin avulla
9. Ero ArrayListin ja LinkedListin välillä Java-kokoelmakehyksessä?

ArrayList ja LinkedList
| ArrayList | LinkedList |
|---|---|
| Tämä luokka käyttää dynaamista taulukkoa elementtien tallentamiseen. Geneeristen tuotteiden käyttöönoton myötä tämä luokka tukee kaikentyyppisten objektien tallennusta. | Tämä luokka käyttää kaksoislinkitettyä luetteloa elementtien tallentamiseen siihen. Samoin kuin ArrayList, tämä luokka tukee myös kaikentyyppisten objektien tallennusta. |
| ArrayListin käsittely vie enemmän aikaa sisäisen toteutuksen vuoksi. Aina kun poistamme elementin, taulukon läpi kuljetaan sisäisesti ja muistibittejä siirretään. | LinkedListin manipulointi vie vähemmän aikaa verrattuna ArrayListiin, koska kaksoislinkitetyssä luettelossa ei ole käsitystä muistibittien siirtämisestä. Lista on selattu ja viitelinkki muutettu. |
| Tämä luokka toteuttaa List-rajapinnan. Siksi tämä toimii luettelona. | Tämä luokka toteuttaa sekä List-rajapinnan että Deque-rajapinnan. Siksi se voi toimia luettelona ja dequena. |
| Tämä luokka toimii paremmin, kun sovellus vaatii tietojen tallentamista ja niiden käyttöä. | Tämä luokka toimii paremmin, kun sovellus vaatii tallennettujen tietojen käsittelyä. |
Lisätietoja saat artikkelista - ArrayList vs LinkedList Javassa
10. Mikä on iteraattori?
Java's Collection -kehys käyttää iteraattoreita elementtien hakemiseen yksitellen. Tämä iteraattori on universaali, koska sitä voidaan käyttää minkä tahansa tyyppisten kokoelmaobjektien kanssa. Iteratorin avulla voimme suorittaa sekä luku- että poistotoimintoja. Tämä on parannettu versio Enumerationista, johon on lisätty poistoelementtejä.
Luetteloitaessa elementtejä kaikissa Collection-kehyksessä toteutettuja rajapintoja, kuten Aseta , Lista , Jonottaa , Mistä , ja kaikki toteutetut Map-luokat, Iteraattoria on käytettävä. Ainoa koko kokoelmakehykselle käytettävissä oleva kohdistin on iteraattori. Voit luoda iteraattoriobjektin Collection-liittymän iterator()-menetelmällä.
Syntaksi:
Iterator itr = c. iterator ();>
Huomautus: Tässä c on mikä tahansa kokoelmaobjekti. itr on tyyppiä Iterator-liitäntä ja viittaa c.
Lisätietoja saat artikkelista - Iteraattorit Javassa
11. Mitä eroa on iteraattorilla ja luettelolla?
Suurin ero iteraattorin ja numeroinnin välillä on se, että iteraattoreissa on Remove()-menetelmä, kun taas luettelointien ei ole. Siten Iteratorin avulla voimme manipuloida objekteja lisäämällä ja poistamalla niitä kokoelmista. Koska luettelointi voi vain kulkea objektien läpi ja hakea ne, se toimii kuin vain luku -käyttöliittymä.
Lisätietoja saat artikkelista - Ero Iteratorin ja Enumeration välillä
12. Mitä eroa on Luettelon ja Setin välillä Javassa?
Suurin ero luettelon ja joukon välillä on, että luettelo voi sisältää päällekkäisiä elementtejä, kun taas joukko sisältää vain yksilöllisiä elementtejä. Lista on Järjestetty ja säilyttää sen objektin järjestyksen, johon ne on lisätty. Sarja on tilaamaton.
| Lista | Aseta |
|---|---|
| Lista on indeksoitu sekvenssi. | Joukko on indeksoimaton sarja. |
| Luettelo sallii päällekkäiset elementit | Sarja ei salli päällekkäisiä elementtejä. |
| Elementit niiden sijainnin mukaan ovat käytettävissä. | Elementtien sijainti ei ole sallittua. |
| Useita nollaelementtejä voidaan tallentaa. | Nollaelementit voidaan tallentaa vain kerran. |
| Listatoteutukset ovat ArrayList, LinkedList, Vector, Stack | Joukkototeutukset ovat HashSet, LinkedHashSet. |
Lisätietoja saat artikkelista - Ero luettelon ja joukon välillä Javassa
13. Mitkä ovat Java Collections Frameworkin parhaat käytännöt?
Seuraavassa on joitain parhaita käytäntöjä Java-kokoelmien käytössä:
- Ohjelmat tulee kirjoittaa rajapinnoiksi, ei toteutuksiksi, jotta voimme muokata toteutusta myöhemmin.
- Aina kun mahdollista, käytä Genericsiä varmistaaksesi tyyppiturvallisuuden ja välttääksesi ClassCastExceptions.
- Sopivan kokoelmatyypin valinta tarpeen mukaan. Jos koko on esimerkiksi kiinteä, saatamme haluta käyttää Arraya ArrayListin päällä. Kun iteroitamme kartan yli, meidän tulisi käyttää LinkedHashMapia. Sarja on paras tapa välttää päällekkäisyyksiä.
- Käytä JDK:n tarjoamia muuttumattomia luokkia avaimina Mapissa välttääksesi hashCode()- ja equals()-koodeja.
- Koodin luettavuuden parantamiseksi meidän tulisi käyttää isEmpty():tä sen sijaan, että etsisimme kokoelman kokoa ja vertaamme sitä nollaan.
- Oman toteutuksen kirjoittamisen sijaan käytä Kokoelmat-apuluokkaa saadaksesi vain luku -, synkronoituja tai tyhjiä kokoelmia. Se parantaa koodin uudelleenkäyttöä ja parantaa samalla vakautta.
14. Mikä on prioriteettijono Javassa?
PriorityQueueita käytetään kohteiden käsittelemiseen niiden prioriteetin mukaan. Jonot noudattavat First-In-First-Out-algoritmia, mutta joskus jonon elementit on käsiteltävä niiden prioriteetin mukaan, jolloin PriorityQueue tulee peliin. Prioriteettijonot perustuvat prioriteettikasoihin.
Prioriteettijonon elementit järjestetään luonnollisen järjestyksen mukaan tai jonon rakennusaikana toimitetulla Comparatorilla riippuen siitä, kumpaa rakentajaa käytetään.

Prioriteettijonot Javassa
Ilmoitus:
public class PriorityQueue extends AbstractQueue implements Serializable where E is the type of elements held in this queue>
Luokka toteuttaa Serialisable-, Iterable-, Collection- ja Queue-rajapintoja.
15. Mitä eroa on listalla, joukolla ja kartalla javassa?
| Lista | Aseta | Kartta |
|---|---|---|
| Luettelon käyttöliittymä sallii päällekkäiset elementit | Sarja ei salli päällekkäisiä elementtejä. | Kartta ei salli päällekkäisiä elementtejä |
| Lista säilyttää lisäysjärjestyksen. | Sarja ei ylläpidä lisäysjärjestystä. | Kartta ei myöskään ylläpidä lisäysjärjestystä. |
| Voimme lisätä minkä tahansa määrän nolla-arvoja. | Mutta sarjassa melkein vain yksi nolla-arvo. | Kartta sallii enintään yhden nollaavaimen ja minkä tahansa määrän nolla-arvoja. |
| Listan toteutusluokat ovat Array List ja LinkedList. | Joukkototeutusluokat ovat HashSet, LinkedHashSet ja TreeSet. | Kartan toteutusluokat ovat HashMap, HashTable, TreeMap, ConcurrentHashMap ja LinkedHashMap. |
Lisätietoja saat artikkelista - Ero luettelon, joukon ja kartan välillä Javassa
16. Mitä eroa on jonolla ja pinolla?
| Pino | Jonottaa |
|---|---|
| Stacks toimii LIFO-periaatteella, mikä tarkoittaa, että viimeiseksi lisätty elementti on ensimmäinen, joka poistetaan. | Jonot toimivat FIFO-periaatteella, mikä tarkoittaa, että ensimmäisenä lisätty elementti poistetaan ensimmäisenä. |
| Pinoissa lisäys ja poisto tapahtuu vain ylhäältä. | Jonoissa lisäys tapahtuu luettelon takaosassa ja poisto tapahtuu luettelon etupuolelta. |
| Insert-toimintoa kutsutaan push-operaatioksi. | Insert-toimintoa kutsutaan jonooperaatioksi. |
| Poistotoimintoa kutsutaan pop-operaatioksi. | Poista-toimintoa kutsutaan jonosta poistamiseksi. |
| Pinon yläreuna osoittaa aina luettelon viimeiseen elementtiin, joka on ainoa osoitin, jolla luetteloon pääsee. | Kaksi osoitinta ylläpidetään jonoihin pääsyä varten. Etuosoitin osoittaa ensimmäiseen lisättyyn elementtiin ja takaosoitin viimeksi lisättyyn elementtiin. |
17. Mikä on BlockingQueue Javassa?
Javan BlockingQueue-käyttöliittymä on lisätty Java 1.5:een yhdessä useiden muiden samanaikaisten Utility-luokkien kanssa, kuten ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList jne. BlockingQueue-käyttöliittymä tukee vuonohjausta (jonon lisäksi) ottamalla käyttöön eston, jos joko BlockingQueu on täynnä tai tyhjä.
Säie, joka yrittää asettaa elementin jonoon täydessä jonossa, estetään, kunnes jokin muu säie jättää tilaa jonoon joko poistamalla yhden tai useamman elementin jonosta tai tyhjentämällä jonon kokonaan. Vastaavasti se estää viestiketjun, joka yrittää poistaa tyhjästä jonosta, kunnes jotkut muut säikeet lisäävät kohteen. BlockingQueue ei hyväksy nolla-arvoa. Jos yritämme asettaa nollakohteen jonoon, se heittää NullPointerExceptionin.
BlockingQueuen käyttö

Jonon esto Javassa
BlockingQueuen hierarkia

Estojonon hierarkia Javassa
Ilmoitus:
public interface BlockingQueue extends Queue>
Tässä, JA on kokoelmaan tallennettujen elementtien tyyppi.
Lisätietoja saat artikkelista - BlockingQueue-käyttöliittymä Javassa
18. Mikä on hashCode()?

Kuva esittelee Java Hash Code
hashCode()-metodi palauttaa hashcode-arvon kokonaislukuna. Se määritellään Java Object -luokassa, joka laskee annettujen syöttöobjektien hash-arvot. Hashcode-arvoa käytetään enimmäkseen hajautuspohjaisissa kokoelmissa, kuten HashMap, HashSet, HashTable jne. Tämä menetelmä on ohitettava jokaisessa luokassa, joka ohittaa equals()-metodin.
Syntaksi :
public int hashCode() // This method returns the hash code value // for the object on which this method is invoked.>
Lisätietoja saat artikkelista - equals()- ja hashCode()-metodit Javassa
tyypin valu ja tyyppimuunnos javassa
19. Erota ArrayList ja Vector Java Collection Frameworkissa.
Kokoelmahaastatteluissa tämä kysymys esitetään usein; Vector on kuitenkin synkronoitu, kun taas ArrayList ei. ArrayList on nopeampi kuin Vector. ArrayListin Array-kokoa kasvatetaan 50 % tarvittaessa, kun taas Vectorin kapasiteetti kaksinkertaistetaan aina, kun sitä tarvitaan.

Array List vs Vector javassa
| ArrayList | Vektori |
|---|---|
| ArrayList ei ole synkronoitu | Vektori on synkronoitu. |
| ArrayListin kokoa kasvatetaan 50 %:iin nykyisestä taulukon koosta, jos elementtien määrä ylittää sen kapasiteetin. | ArrayListin kokoa kasvatetaan 100 prosenttiin nykyisestä taulukon koosta, jos elementtien määrä ylittää sen kapasiteetin. |
| ArrayList on nopea, koska sitä ei ole synkronoitu. | Vector on hitaampi, koska se on synkronoitu. |
| Iteraattorirajapintaa käytetään elementtien läpikulkuun | Iteraattorirajapintaa tai Enumeraatiota voidaan käyttää vektorin kulkemiseen. |
Lisätietoja saat artikkelista - Vector vs ArrayList Javassa
20. Tee ero Iteratorin ja ListIteratorin välillä.
| Iteraattori | ListIterator |
|---|---|
| Voi kulkea kokoelmassa olevia elementtejä vain eteenpäin. | Pystyy kulkemaan kokoelmassa olevien elementtien läpi sekä eteen- että taaksepäin. |
| Auttaa kulkemaan kartan, luettelon ja joukon läpi. | Voi kulkea vain luettelossa, ei kahta muuta. |
| Indeksejä ei voi saada Iteratorin avulla. | Siinä on menetelmiä, kuten nextIndex() ja previousIndex(), joiden avulla saadaan elementtien indeksit milloin tahansa Listan läpi kulkiessa. |
| Kokoelmassa olevia elementtejä ei voi muokata tai korvata | Voimme muokata tai korvata elementtejä set(E e) avulla |
Lisätietoja saat artikkelista - Ero Iteraattorin ja ListIteratorin välillä
21. Mitä eroa on iteraattorilla ja luettelolla?
Iteraattori: Se on yleinen iteraattori, koska voimme soveltaa sitä mihin tahansa kokoelmaobjektiin. Iteraattoria käyttämällä voimme suorittaa sekä luku- että poistotoimintoja.
Syntaksi:
// Here 'c' is any Collection object. itr is of // type Iterator interface and refers to 'c' Iterator itr = c.iterator();>
Luettelo: Luettelo (tai enum) on käyttäjän määrittämä tietotyyppi. Sitä käytetään pääasiassa nimeämiseen integraalivakioihin, nimet tekevät ohjelman helposti luettavan ja ylläpidettävän.
Syntaksi:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }> | Iteraattori | Luettelo |
|---|---|
| Iteraattori on universaali kohdistin, koska sitä voidaan soveltaa kaikkiin kokoelmaluokkiin. | Luettelo ei ole yleinen kohdistin, koska se koskee vain vanhoja luokkia. |
| Iteraattorissa on Remove()-menetelmä. | Luettelossa ei ole poista()-menetelmää. |
| Iteraattori voi tehdä muutoksia (esim. käyttämällä remove()-menetelmää, joka poistaa elementin kokoelmasta läpikäynnin aikana). | Luettelorajapinta toimii vain luku -käyttöliittymänä, Kokoelmaan ei voi tehdä muutoksia kokoelman elementtien läpi kulkiessa. |
| Iterator ei ole vanha käyttöliittymä. Iteraattoria voidaan käyttää HashMapin, LinkedListin, ArrayListin, HashSetin, TreeMapin ja TreeSetin läpikulkuun. | Enumeration on vanha käyttöliittymä, jota käytetään Vectorin ja Hashtablen läpikulkuun. |
Lisätietoja saat artikkelista - Ero Iteratorin ja Enumeration välillä
22. Mitkä ovat Java Hashmapin ominaisuudet?
HashMap on samanlainen kuin HashTable, mutta sitä ei ole synkronoitu. Sen avulla voimme myös tallentaa nolla-avaimet, mutta siinä pitäisi olla vain yksi nolla-avainobjekti ja nolla-arvoja voi olla kuinka monta tahansa. Tämä luokka ei takaa kartan järjestystä. Jotta voit käyttää tätä luokkaa ja sen menetelmiä, sinun on tuotava java.util. HashMap paketti tai sen huippuluokka.

HashMap Javassa
Syntaksi:
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable>
Parametrit: Se vaatii kaksi parametria, nimittäin seuraavasti:
- Tämän kartan ylläpitämien avainten tyyppi (K)
- Yhdistettyjen arvojen tyyppi (V)
Lisätietoja saat artikkelista - HashMap Javassa esimerkein
23. Mitä ovat kokoelmaliitännät?
The Kokoelma käyttöliittymä on Java Collections Frameworkin jäsen. Se on osa java.util paketti. Se on yksi kokoelmahierarkian juurirajapinnoista. Mikään luokka ei ole suoraan toteuttanut Collection-rajapintaa. Se toteutetaan kuitenkin epäsuorasti sen alatyyppien tai alirajapintojen, kuten List, Queue ja Set, kautta.
Esimerkiksi, HashSet-luokka toteuttaa Set-rajapinnan, joka on Collection-rajapinnan alirajapinta. Jos kokoelmatoteutus ei toteuta tiettyä toimintoa, sen tulee määrittää vastaava menetelmä UnsupportedOperationExceptionin heittämiseksi.
Kokoelman hierarkia:

Kokoelman käyttöliittymä Javassa
24. Selitä listan käyttöliittymä.

Luokkaliittymä Javassa
Javassa List-käyttöliittymän avulla käyttäjä voi tallentaa järjestetyn objektikokoelman. Luettelo on kokoelman lapsikäyttöliittymä. Kokoelmassa lista on järjestetty kokoelma objekteja, joilla voi olla päällekkäisiä arvoja. Koska List säilyttää lisäysjärjestyksen, se sallii paikantamisen ja lisäyksen, mikä mahdollistaa myös arvojen kaksoiskappaleet.
Syntaksi:
public interface List extends Collection ;>
Tämä listarajapinta on toteutettu eri luokilla, kuten ArrayList, Vector, Stack jne. Koska kaikki alaluokat toteuttavat listan, voimme instantoida listaobjektin millä tahansa näistä luokista.
Esimerkki:
tietokoneen organisaatio ja arkkitehtuuri
List al = uusi ArrayList ();
Lista ll = uusi LinkedList ();
Lista v = uusi vektori ();Missä T on objektin tyyppi

Array List Javassa
Luokat, jotka toteuttavat List-rajapinnan, ovat seuraavat:
- ArrayList
- LinkedList
- Vektori
- Pino
25. Kirjoita ohjelma, joka muuntaa tietyn taulukon kokoelmaksi asList()-menetelmällä.
Voimme käyttää taulukkopohjaisten tietojen muuntamiseen kokoelmapohjaiseksi java.util.Arrays luokkaa. Tämä luokka tarjoaa staattisen menetelmän asList(T… a), joka muuntaa taulukon kokoelmaksi.
Java
// Convert an Array into Collection in Java> // import java util library> import> java.util.*;> > // class for writing logic of the problem> public> class> ArrayToCollection {> >public> static> void> main(String args[])> >{> >// array input> >String students[] = {>'Kamlesh'>,>'Abhay'>,> >'Abhishek'>,>'Shivansh'> };> > >// printing input elements for comparison> >System.out.println(>'Array input: '> >+ Arrays.toString(students));> > >// converting array into Collection> >// with asList() function> >List studentList = Arrays.asList(students);> > >// print converted elements> >System.out.println(>'Converted elements: '> >+ studentList);> >}> }> |
>
>Lähtö
Array input: [Kamlesh, Abhay, Abhishek, Shivansh] Converted elements: [Kamlesh, Abhay, Abhishek, Shivansh]>
26. Erota HashSet ja HashMap
| HashSet | HashMap |
|---|---|
| HashSet toteuttaa Set-rajapinnan | HashMap toteuttaa Map-käyttöliittymän |
| Kopioita ei sallita | Kyllä arvojen kaksoiskappaleet ovat sallittuja, mutta kaksoisavainta ei sallita |
| Valearvot ovat sallittuja HashSetissä. | Mitään valearvoja ei sallita HashMapissa. |
| Lisäystoiminnon aikana tarvitaan yksi objekti | 2 Objekteja tarvitaan lisäystoiminnon aikana |
| Nopeus on verrattain hitaampi kuin HashMap | Nopeus on verrattain nopeampi kuin HashSet, koska tässä on käytetty hajautustekniikkaa. |
| Sillä on yksi tyhjä arvo | Yksi tyhjä avain ja mikä tahansa määrä nolla-arvoja |
| Lisäämiseen käytetään Add()-menetelmää | Lisäämiseen käytetään put () -menetelmää. |
Lisätietoja saat artikkelista - Ero HashMapin ja HashSetin välillä
27. Erota HashSet ja HashTable.
| HashSet | HashTable |
|---|---|
| HashSet sallii NULL-elementit | HashTable ei salli NULL-elementtejä. |
| HashSetissä lisäämäsi objektit eivät ole taattuja samassa järjestyksessä. Objektit lisätään niiden hash-koodin perusteella. LinkedHashSetiä voidaan käyttää järjestyksen ylläpitämiseen. | HashTable ei ylläpidä lisäysjärjestystä. |
| HashSet ei ole synkronoitu, mutta se voidaan synkronoida ulkoisesti. | HashTable on synkronoitu. |
| add()-menetelmää käytetään lisäämiseen HashSet-tiedostoon | put()-menetelmää käytetään lisäämiseen HashTable-taulukkoon |
28. Mikä on kuormituskertoimen oletuskoko hajautuspohjaisessa kokoelmassa?
Kun kuormituskerroin kasvaa, kapasiteetti kasvaa niin, että HashMapin toiminnallinen monimutkaisuus pysyy O(1), jos nykyisen elementin suhde alkukapasiteettiin ylittää kynnyksen. O(1):n toiminnallisen monimutkaisuuden merkitys tarkoittaa, että haku- ja lisäystoiminnot vievät jatkuvasti aikaa. Oletuskuormituskertoimen koko on 0,75 . Oletuskapasiteetti lasketaan kertomalla alkukapasiteetti kuormituskertoimella.
Lisätietoja saat artikkelista - Load Factor HashMapissa Javassa esimerkein
Java-kokoelman haastattelukysymyksiä kokeneille
29. Mitä eroa on Javassa Comparablella ja Comparatorilla?
Java tarjoaa kaksi käyttöliittymää objektien lajitteluun käyttämällä luokan datajäseniä:
- Vertailukelpoinen
- Vertailija
| Vertailukelpoinen | Vertailija |
|---|---|
| Vertaileva käyttöliittymä tarjoaa yhden lajittelujärjestyksen. | Comparator-käyttöliittymä tarjoaa useita lajittelusarjoja. |
| Varsinaista luokkaa muokataan vastaavalla käyttöliittymällä | Varsinaista luokkaa ei muokata Comparator-liittymässä. |
| vertailuTo()-menetelmää käytetään elementtien lajitteluun. | vertaa() -menetelmää käytetään elementtien lajitteluun. |
| Vertailukelpoinen löytyy paketista java.lang | Comparator on paketissa java.util |
Lisätietoja saat artikkelista - Vertaileva vs Comparator Javassa
30. Mitä eroa on vikasietoisen ja vikaturvallisen välillä?
Java-iteraattoreita käytetään kokoelma-objektien iterointiin. Fail-Fast iteraattorit heittävät heti ConcurrentModificationException jos on a rakenteellinen muutos kokoelmasta. Rakennemuutos tarkoittaa minkä tahansa elementin lisäämistä tai poistamista kokoelmasta säikeen toistuessa kokoelmassa. ArrayList- ja HashMap-luokkien Iterator ovat esimerkkejä epäonnistuneesta Iteratorista.
| Fail-Fast | Idioottivarma |
|---|---|
| ConcurrentModificationException heitetään, kun objektia muokataan iterointiprosessin aikana. | Poikkeus ei ole heitetty |
| Fail-Fast tarvitsee vähemmän muistia prosessin aikana. | Fail-Safe iterator vaatii enemmän muistia prosessin aikana. |
| Klooniobjektia ei luoda iterointiprosessin aikana. | Klooniobjekti tai kopio luodaan iterointiprosessin aikana. |
| Fail-Fast ei salli muokkaamista iterointiprosessin aikana. | Fail-Safe sallii muokkaamisen iterointiprosessin aikana. |
| Fail-Fast on nopea, | Fail-Safe on hieman hitaampi kuin vikasietoinen. |
| Esimerkkejä: ArrayList, Vector, HashMap, HashSet jne. | Esimerkkejä: ConcurrentHashMap, CopyOnWriteArrayList jne. |
Lisätietoja saat artikkelista - Fail Fast ja Fail Safe Iterators Javassa
31. Kirjoita ohjelma iteroimaan listaa lambda-lausekkeen avulla.
Iterointi voidaan tehdä käyttämällä a lambda ilmaisu.
Syntaksi:
list_name.forEach(variable->{//koodilohko})> 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); });>> }> |
>
>Lähtö
Geeks for Geeks>
Lisätietoja saat artikkelista - Iteroi listan kautta Javassa
32. Mikä IdentityHashMap on?
IdentityHashMap toteuttaa Map-rajapinnan käyttämällä Hashtablea, vertaamalla avaimia (ja arvoja) käyttämällä viitetasa-arvoa objektien tasa-arvon sijaan. Tämä luokka toteuttaa Map-rajapinnan, mutta se rikkoo tarkoituksella Mapin yleissopimusta, joka vaatii kohteiden vertailua equals()-menetelmällä. Tätä luokkaa käytetään, kun käyttäjä sallii objektien vertailun viittausten avulla. Se kuuluu java.util-pakettiin.
Lisätietoja saat artikkelista - IdentityHashMap-luokka Javassa
33. Kirjoita Java-kielellä ohjelma, joka näyttää hash-taulukon sisällön luettelon avulla.
Hashtable-luokka toteuttaa hash-taulukon, joka kartoittaa avaimet arvoihin. Mitä tahansa ei-null-objektia voidaan käyttää avaimena tai arvona. Objektien tallentaminen ja hakeminen hashtableista onnistuneesti edellyttää, että avaimina käytettävien objektien tulee toteuttaa hashCode- ja equals-metodi. Alla on ohjelma, joka näyttää hash-taulukon sisällön luettelon avulla:
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());> >}> >}> }> |
>
>Lähtö
Geeks for Geeks>
34. Kirjoita Java-ohjelma saadaksesi kokoelmanäkymän HashMapissa olevista arvoista.
Javan HashMap-luokassa on java.util.HashMap.values() -menetelmä kokoelmien luomiseksi HashMap-arvoista. Pohjimmiltaan se palauttaa HashMap-arvojen kokoelmanäkymän.
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());> >}> }> |
>
>Lähtö
Initial Mappings are: {0=Welcome, 1=to, 2=Geeks, 3=4, 4=Geeks} The collection is: [Welcome, to, Geeks, 4, Geeks]> Lisätietoja saat artikkelista - HashMap arvot() -menetelmä Javassa
35. Kirjoita ohjelma kahden ArrayListin yhdistämiseksi yhdeksi ArrayListiksi.
Koska Javassa on kaksi ArrayLists-listaa, tehtävämme on liittyä näihin ArrayListeihin.
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);> >}> }> |
>
>
estetyt yhteystiedotLähtö
ArrayList 1: [Geeks, For, ForGeeks] ArrayList 2: [GeeksForGeeks, A computer portal] Joined ArrayLists: [Geeks, For, ForGeeks, GeeksForGeeks, A computer portal]>
Lisätietoja saat artikkelista - Liity kahteen ArrayListsiin Javassa
36. Kuinka voit synkronoida ArrayListin Javassa?
Collections.synchronizedList()-metodin avulla voimme synkronoida kokoelmiamme Javassa. SynchronizedList() palauttaa synkronoidun (säieturvallisen) luettelon, jonka taustalla on valinta.
Java
// Java program to show synchronization of ArrayList> import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Non Synchronized ArrayList> >List list =>new> ArrayList();> > >list.add(>'Eat'>);> >list.add(>'Coffee'>);> >list.add(>'Code'>);> >list.add(>'Sleep'>);> >list.add(>'Repeat'>);> > >// Synchronizing ArrayList in Java> >list = Collections.synchronizedList(list);> > >// we must use synchronize block to avoid> >// non-deterministic behavior> >synchronized> (list)> >{> >Iterator it = list.iterator();> >while> (it.hasNext()) {> >System.out.println(it.next());> >}> >}> >}> }> |
>
>Lähtö
Eat Coffee Code Sleep Repeat>
37. Mikä on ominaisuusluokka Javassa?
Ominaisuudet luokka on Hashtablen alaluokka. Ominaisuudet-luokka tallentaa listan arvoista, joiden avain on merkkijono ja jonka arvo on myös merkkijono. Ominaisuudet voivat määrittää muita ominaisuusluokkaluetteloita, mutta oletusarvo on ominaisuudet.
Ominaisuudet-luokan ominaisuudet:
- Kiinteistö on Hashtablen alaluokka.
- Ominaisuudet-tiedostoa käytetään merkkijonotietotyypin tallentamiseen ja hakemiseen arvoluettelolle, jossa avain on merkkijono ja arvo on myös merkkijono.
- Jos alkuperäinen ominaisuusluettelo ei sisällä tiettyä avainominaisuutta, etsitään sen sijaan oletusominaisuusluettelosta.
- Objektit voidaan jakaa useiden säikeiden kesken ilman ulkoista synkronointia.
- Ominaisuuksien luokkaa voidaan käyttää järjestelmän ominaisuuksien hakemiseen.
Lisätietoja saat artikkelista - Java-ominaisuusluokka
38. Mitä tapahtuu, jos käytät HashMapia monisäikeisessä Java-sovelluksessa?
Monisäikeisessä ympäristössä, jos useat säikeet muuttavat karttaa rakenteellisesti, kuten lisäävät, poistavat tai muokkaavat kartoituksia, HashMapin sisäinen tietorakenne voi vioittua ja siitä voi puuttua linkkejä, vääriä merkintöjä ja itse kartta saattaa vioittua. muuttua täysin hyödyttömäksi. Siksi sinun ei pitäisi käyttää HashMapia samanaikaisessa sovelluksessa; käytä sen sijaan ConcurrentHashMapia tai Hashtablea, joka on säikeen turvallinen. ConcurrentHashMap sisältää kaikki Hashtablen menetelmät sekä täydellisen hakujen ja päivitysten samanaikaisuuden.
Miten ThreadSafeConcurrentHashMapista tuli säikeen turvallinen?
- java.util.Concurrent.ConcurrentHashMap-luokka tarjoaa säikeen turvallisuuden jakamalla kartan segmentteihin, jolloin lukko voidaan ottaa vain kerran segmenttiä kohti, eli kerran jokaista säiettä kohden.
- ConcurrentHashMapin lukutoiminto ei vaadi lukitusta.
Lisätietoja saat artikkelista - Kuinka ConcurrentHashMap saavuttaa säikeen turvallisuuden Javassa?
39. Mitä tapahtuu, jos kaksi eri HashMapin avainta palauttavat saman hashcode()?
Kun kaksi erilaista HashMapin avainta palauttavat saman hash-koodin, ne päätyvät samaan ämpäriin; siksi törmäyksiä tapahtuu. n törmäystapauksessa, eli kahden tai useamman solmun indeksi on sama, solmut liitetään linkkiluettelolla eli ensimmäinen solmu viittaa toiseen solmuun ja toinen solmuun kolmanteen ja niin edelleen.
Lisätietoja saat artikkelista - HashMapin sisäinen toiminta Javassa
40. Mikä WeakHashMap on?
WeakHashMap toteuttaa Map-käyttöliittymän. Toisin kuin HashMap, WeakHashMap sallii roskien keräämisen, vaikka avaimeksi määritetty objekti ei sisällä viittauksia, vaikka se on liitetty WeakHashMapiin. Toisin sanoen Garbage Collector on parempi kuin WeakHashMap.
Lisätietoja saat artikkelista - Hashmap vs WeakHashMap Javassa
41. Mikä on UnsupportedOperationException?
Sovellusliittymien tai luettelototeutusten yhteydessä UnsupportedOperationException on yleinen poikkeus. Poikkeus tehdään, kun pyydettyä toimintoa ei voida suorittaa. Tämä luokka on Java Collections Frameworkin jäsen.
Syntaksi:
public class UnsupportedOperationException extends RuntimeException>
Lisätietoja saat artikkelista - Ei tuettuOperationException
42. Kuinka tehdä kokoelmasta vain luku -muotoinen Java?
Vain luku -kokoelman luomiseen sisältyy objektin rajoittaminen vain tietojen hakemiseen, eikä tietojen lisäämistä tai poistamista. Javalla on erilaisia menetelmiä eri kokoelmatyypeille, kuten unmodifiableCollection(), unmodifiableMap(), unmodifiableSet() jne. java.util. Kokoelmaluokka määrittelee kaikki menetelmät. UnmodifiableCollection()-menetelmä luo vain luku -kokoelman. Se vaatii viittauksen Collection-luokkaan. Jos meillä on Set Interface -objekti, voimme käyttää unmodifiableSet() tehdä vain luku -tilassa.
Lisätietoja saat artikkelista - Kuinka tehdä kokoelmasta vain luku -versio Javassa?
43. Ero PriorityQueuen ja TreeSetin välillä Javassa?
| PriorityQueue | TreeSet |
|---|---|
| PriorityQueue tulee JDK 1.5:ssä. | TreeSet tulee JDK 1.4:ssä. |
| PriorityQueuen käyttämä tietorakenne on Queue | TreeSetin käyttämä tietorakenne on Set. |
| Päällekkäiset elementit ovat sallittuja. | Päällekkäiset elementit eivät ole sallittuja. |
| Pääelementtiä lukuun ottamatta muut elementit eivät noudata mitään tiettyä järjestystä PriorityQueuessa. | TreeSetissä kaikki elementit pysyvät lajiteltuna. |
| PriorityQueuea käyttämällä voimme noutaa suurimman tai pienimmän elementin O(1)-ajassa. | TreeSet ei tarjoa tapaa noutaa suurinta tai pienintä elementtiä O(1)-ajassa, mutta koska ne ovat lajiteltuina, se saa ensimmäisen tai viimeisen elementin O(1)-ajassa. |
Lisätietoja saat artikkelista - Ero PriorityQueuen ja TreeSetin välillä
44. Mikä on timanttioperaattori Javassa?
Timanttioperaattoreita käytetään yksinkertaistamaan geneeristen toimintojen käyttöä objekteja luotaessa samalla kun vältetään ohjelman tarkistamattomat varoitukset. Kun Diamond-operaattori otettiin käyttöön Java 7:ssä, voimme luoda objektin mainitsematta yleistä tyyppiä lausekkeen oikealla puolella alla olevan kuvan mukaisesti.
Syntaksi:
List list = new ArrayList();>
Lisätietoja saat artikkelista - Timanttioperaattori
45. Kuinka TreeMap toimii Javassa?
TreeMap tallentaa avain-arvo-parit, mutta TreeMap lajittelee avaimet nousevasti laskevan sijaan kuten HashMap. Riippuen siitä, mitä rakentajaa käytetään, TreeMap lajitellaan joko avaimiensa perusteella tai vertailijan avulla. TreeMapissa elementit lajitellaan puna-mustan puun perusteella. Punamusta puu on itsetasapainottava binäärihakupuu, jossa jokaisessa solmussa on ylimääräinen bitti, ja tämä bitti tulkitaan usein väriksi (punainen tai musta). Näitä värejä käytetään varmistamaan, että puu pysyy tasapainossa lisäysten ja poistojen aikana.

Solmun rakenne Javassa
Lisätietoja saat artikkelista - TreeMapin sisäinen työskentely Javassa
46. Luettele tapoja iteroida kartan yli javassa?
HashMap-luokka tarjoaa Javan karttaliittymän tallentamalla tiedot (avain, arvo) pareihin ja pääsemällä niihin toisen tyyppisen indeksin avulla. Tämän luokan käyttäminen edellyttää tuontia java.util.HashMap paketti tai sen huippuluokka.
On olemassa lukuisia tapoja iteroida HashMapissa, joista 5 on lueteltu alla:
- Iteroi HashMap EntrySetin kautta käyttämällä iteraattoreita.
- Iteroi HashMap KeySetin kautta Iteratorin avulla.
- Toista HashMap käyttämällä jokaista silmukkaa.
- Iterointi HashMapin kautta käyttämällä Lambda-lausekkeita.
- Selaa HashMapia Stream API:n avulla.
Lisätietoja saat artikkelista - HashMapin iterointi Javassa
47. Mikä on CopyOnWriteArrayList Javassa?

CopyOnWriteArrayList Javassa
JDK 1.5 esitteli parannetun version ArrayLististä nimeltä CopyOnWriteArrayList, jossa kaikki muutokset (lisää, aseta, poista jne.) toteutetaan uudella kopiolla. Se löytyy osoitteesta java.util.concurrent. Se on tietorakenne, joka on luotu käytettäväksi samanaikaisessa ympäristössä. Thread-pohjaisessa ympäristössä CopyOnWriteArrayList on tarkoitettu usein luettavaan ja harvoin päivitettävään. CopyOnWriteArrayList on säikeen turvallinen versio ArrayLististä.
Lisätietoja saat artikkelista - CopyOnWriteArrayList Javassa
48. Mikä EnumMap on Javassa?
EnumMap on Map-käyttöliittymän toteutus, joka on ominaista luettelointityypeille. EnumMap-luokka on Java Collections Frameworkin jäsen, eikä sitä ole synkronoitu. Se laajentaa AbstractMapia ja toteuttaa Map-käyttöliittymän javassa. EnumMap kuuluu java.util-pakettiin.
Syntaksi:
julkinen luokka EnumMap
laajentaa AbstractMap toteuttaa serialisoitavan, kloonattavan // K:n on laajennettava Enum, mikä pakottaa vaatimuksen, että avainten on oltava määritettyä enum-tyyppiä.
Parametrit:
- Avainobjektityyppi
- Arvoobjektin tyyppi

EnumMap Javassa
Lisätietoja saat artikkelista - EnumMap-luokka Javassa
49. Kuinka Hashmap toimii sisäisesti?
HashMap toimii hajautusperiaatteella. HashMap sisältää joukon solmuja ja solmu voi edustaa luokkaa, jolla on seuraavat objektit:
- int hash
- K avain
- V arvo
- Solmu seuraavaksi
HashMapin sisäinen toiminta:
- Hashing
- Kauhat
- Indeksin laskenta Hashmapissa
Lisätietoja saat artikkelista - HashMapin sisäinen toiminta Javassa
viisikymmentä. Miksi hashmapin iteraattoria pidetään epäonnistuneena?
epäonnistuneet iteraattorit heittävät välittömästi samanaikaisia muokkauspoikkeuksia, jos jokin ulkopuolinen säie yrittää muokata kokoelmaa, jota ne iteroivat. Fail-fast-ominaisuus varmistaa, että iteraattori epäonnistuu välittömästi, jos se havaitsee, että kokoelman muutokset johtavat epänormaaliin toimintaan tulevaisuudessa.
Epäonnistui nopeasti ominaisuus varmistaa, että jos iteraattori katsoo, että kokoelman muuttaminen johtaisi epänormaaliin käyttäytymiseen milloin tahansa tulevaisuudessa, se epäonnistuu välittömästi.
Esimerkki:
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>);> >}> >}> >}> }> |
>
>
Lähtö:
[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)>
Johtopäätös
Java-kokoelmat on tärkeää ymmärtää Java-kehittäjille tai ohjelmoijille, koska Javaa käytetään laajasti useilla toimialoilla. Kehittäjien on tärkeää ymmärtää Java-kokoelman ydinkäsitteet. Java on yksi yleisimmin käytetyistä kielistä huippuyrityksissä, kuten Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazon jne. Päästäksesi näihin yrityksiin tai muihin IT-yrityksiin, sinun on hallittava nämä enimmäkseen kysytyt Java Collections -haastattelukysymykset, jotta voit murtaa niiden Java-pohjaisen online-arvioinnin ja teknisen haastattelun.
Jos haluat harjoitella koodauskysymyksiä, JAVA-kokoelmaohjelmat voi olla hyödyllinen resurssi.
Java-kokoelmien haastattelukysymykset – UKK
1. Mitä ovat Java-haastattelukysymysten kokoelmat?
Java-kokoelma on kehys, jota käytetään objektikokoelmien tallentamiseen ja käsittelemiseen.
2. Mitkä ovat Javan 4 kokoelmaluokkaa?
Javassa on monia kokoelmia, mutta niistä eniten käytetyt kokoelmat ovat:
- ArrayList
- LinkedList
- HashSet
- Pino
3. Voiko HashMapilla olla päällekkäisiä avaimia?
Ei, HashMapilla ei voi olla päällekkäisiä avaimia. Koska HashMap on yksi Java-kokoelmista, se tallentaa arvon avainarvon muodossa ja jokaiseen avaimeen on liitetty oma arvonsa. Joten koska yhdelläkään avaimella ei voi olla kahta arvoa, meillä ei voi olla päällekkäisiä avaimia HashMapissa.
4. Miksi array ei ole kokoelma?
Taulukko ei ole kokoelma, se johtuu kokoelmien ja taulukoiden toiminnallisista eroista, joista muutama on mainittu alla:
- Taulukon kokoa ei voi muuttaa, kun se on ilmoitettu
- Taulukot voivat sisältää vain homogeenisia tietotyyppejä.
- Taulukko voi sisältää sekä primitiivisiä tietotyyppejä että objekteja, kun taas kokoelmissa se voi sisältää vain kääreobjekteja.