Ogrodje zbirke Java je bil predstavljen v JDK 1.2 ki vsebuje vse razrede zbirke in vmesnike. Zbirka Java je ogrodje, ki zagotavlja mehanizem za shranjevanje in upravljanje zbirke objektov. Razvijalcem omogoča dostop do predpakiranih podatkovnih struktur in algoritmov za obdelavo podatkov.
V tem članku smo opisali 50 najboljših Vprašanja za intervju z zbirkami Java in Odgovori ki pokrivajo vse od osnovnih do naprednih konceptov zbirk Java, kot so navigacijska zbirka, WeakHashMap, tokovi Lambda itd. Ne glede na to, ali ste bolj sveže ali an izkušen Java razvijalec , vam ta vprašanja za intervju z zbirkami Java dajo vso samozavest, ki jo potrebujete za uspešno izvedbo naslednjega intervjuja za Java.

Vprašanja za intervju z zbirkami Java
50 vprašanj smo razdelili na dva dela: Izkušeni in Novinci. Začnimo z vprašanji za začetnike.
Kazalo
Vprašanja za intervju z zbirko Java za začetnike
1. Kaj je zbirka v Javi?
Izraz zbirka se nanaša na skupino predmetov, predstavljenih kot ena enota. Razredi v hierarhiji razredov zbirke Java so razdeljeni na dva dela korenina vmesniki: Zbirka (java.util.Collection) in Zemljevid (java.util.Map) . Izrazi, s katerimi se boste srečali pri spoznavanju zbirke v Javi:
- Ogrodje zbirke: Java's Collection Framework definira razrede in vmesnike za predstavitev skupin predmetov kot ene entitete. Razvijalci C++ lahko primerjajo ogrodje zbirke z STL (standardna knjižnica predlog) in Container Framework z zbirnim okvirom, če prihajajo iz ozadja C++.
- Zbirni vmesnik: Vmesnik razreda določa, kaj naj naredi, ne kako. Z drugimi besedami, to je načrt za razred. Ta vmesnik ponuja najpogostejše metode za vse objekte zbirke, ki so del ogrodja zbirke. Druga možnost je, da predstavlja posamezen predmet kot celoto.
- Razred zbirk: Je član zbirke Collection Framework in je del paketa java.util. Zbiralni objekt ima v tem razredu številne pomožne metode.
2. Kaj je okvir v Javi?
Ogrodja so sklopi razredi in vmesniki ki zagotavljajo že pripravljeno arhitekturo. Za implementacijo novih funkcij ali razredov ni treba definirati ogrodja. Kot rezultat, optimalna objektno usmerjena zasnova vključuje ogrodje, ki vsebuje zbirko razredov, ki vsi izvajajo podobne naloge. Ogrodje je mogoče uporabiti na različne načine, na primer s klicanjem njegovih metod, razširitvijo in zagotavljanjem povratnih klicev, poslušalcev in drugih izvedb. Nekatera priljubljena ogrodja v Javi so:
- Pomlad
- Hibernacija
- Oporniki
- Google spletna orodja (GWT)
- JavaServer Faces (JSF)
3. Kakšna je razlika med Array in Collection v Javi?
Nizi so zbirka podobno tipiziranih spremenljivk s skupnim imenom v Javi. Obstaja nekaj razlik med nizi v Javi in C/C++. Po drugi strani pa so zbirke skupine posameznih predmetov, ki tvorijo eno celoto, znano kot zbirka predmetov.
| Nizi | Zbirka |
|---|---|
| Nizi imajo fiksno velikost, kar pomeni, da ko ustvarimo niz, ga ne moremo povečati ali zmanjšati glede na naše zahteve. | Zbirka je gojitvene narave in temelji na naših zahtevah. Velikost lahko povečamo ali zmanjšamo. |
| Kar zadeva pomnilnik, uporaba nizov ni priporočljiva. | Kar zadeva spomin, so zbirke priporočljive za uporabo. |
| Kar zadeva zmogljivost, se priporoča uporaba nizov. | Z vidika delovanja zbirk ni priporočljivo uporabljati. |
| Matrike lahko vsebujejo le elemente homogenih podatkovnih vrst. | Zbirka lahko vsebuje tako homogene kot heterogene elemente. |
Za več informacij si oglejte članek – Razlika med nizi in zbirkami v Javi
4. Kateri so različni vmesniki, ki se uporabljajo v Java Collections Framework?
Zbirka je znana kot koren hierarhije zbirke. Zbirke predstavljajo skupine predmetov, znanih kot elementi. Platforma java ne zagotavlja nobene neposredne implementacije tega vmesnika, vendar vmesnik Collection izvajajo razreda List in Set.
- Zbirni vmesnik
- Seznam vmesnika
- Nastavite vmesnik
- Vmesnik čakalne vrste
- Vmesnik za odstranitev čakalne vrste
- Vmesnik zemljevida
5. Pojasnite hierarhijo ogrodja zbirke v Javi.
Vsi razredi in vmesniki, ki jih zahteva ogrodje zbirke, so vsebovani v paketu pripomočkov (java. util). Ogrodja zbirk imajo vmesnik, imenovan iterabilni vmesnik, ki iteratorju omogoča iteracijo po vseh zbirkah. Poleg tega vmesnika glavni vmesnik zbirke deluje kot koren za ogrodje zbirke. Vse zbirke razširjajo ta vmesnik zbirke in s tem razširjajo lastnosti iteratorja in metode tega vmesnika. Naslednja slika ponazarja hierarhijo ogrodja zbirke.
Hierarhija zbirke Java
6. Kakšne so prednosti zbirke Framework?
Prednosti zbirke Framework: Ker je pomanjkanje okvira za zbiranje povzročilo zgornji sklop pomanjkljivosti, so naslednje prednosti okvira za zbiranje.
edith mack hirsch
- Dosleden API: API ima osnovni nabor vmesnikov, kot je Zbirka , Set , Seznam , oz Zemljevid , imajo vsi razredi (ArrayList, LinkedList, Vector itd.), ki izvajajo te vmesnike nekaj skupen nabor metod.
- Zmanjša napor pri programiranju: Programerju ni treba skrbeti za oblikovanje zbirke, temveč se lahko osredotoči na njeno najboljšo uporabo v svojem programu. Zato je bil osnovni koncept objektno usmerjenega programiranja (tj. abstrakcije) uspešno implementiran.
- Poveča hitrost in kakovost programa: Poveča zmogljivost z zagotavljanjem visoko zmogljivih implementacij uporabnih podatkovnih struktur in algoritmov, ker v tem primeru programerju ni treba razmišljati o najboljši implementaciji določene podatkovne strukture. Lahko preprosto uporabi najboljšo implementacijo za drastično povečanje učinkovitosti svojega algoritma/programa.
7. Kaj je ArrayList v Javi?
ArrayList je del ogrodja zbirke Java in je razred paketa java.util. Zagotavlja nam dinamična polja v Javi. Glavne prednosti ArrayList so, če deklariramo matriko, potem je treba omeniti velikost, vendar v ArrayList ni treba omeniti velikosti ArrayList, če želite omeniti velikost, potem lahko to storite.

Slika matričnega seznama
Za več informacij si oglejte članek – ArrayList v Javi
8. Kakšna je razlika med zbirko in zbirkami?
| Zbirka | Zbirke |
|---|---|
| Je vmesnik. | Je uporabni razred. |
| Uporablja se za predstavitev skupine posameznih predmetov kot ene same enote. | Definira več uporabnih metod, ki se uporabljajo za delovanje zbiranja. |
| Zbirka je vmesnik, ki vsebuje statično metodo od java8. Vmesnik lahko vsebuje tudi abstraktne in privzete metode. | Vsebuje samo statične metode. |
Za več informacij si oglejte članek – Zbirka proti zbirkam v Javi s primerom
9. Razlika med ArrayList in LinkedList v ogrodju zbirke java?

ArrayList in LinkedList
| ArrayList | LinkedList |
|---|---|
| Ta razred uporablja dinamično polje za shranjevanje elementov v njem. Z uvedbo generikov ta razred podpira shranjevanje vseh vrst objektov. | Ta razred uporablja dvojno povezan seznam za shranjevanje elementov v njem. Podobno kot ArrayList tudi ta razred podpira shranjevanje vseh vrst predmetov. |
| Manipulacija ArrayList traja več časa zaradi notranje izvedbe. Kadar koli interno odstranimo element, se matrika prečka in pomnilniški biti se premaknejo. | Manipulacija LinkedList traja manj časa v primerjavi z ArrayList, ker na dvojno povezanem seznamu ni koncepta premika pomnilniških bitov. Seznam se preleti in referenčna povezava se spremeni. |
| Ta razred implementira vmesnik List. Zato to deluje kot seznam. | Ta razred implementira vmesnik List in vmesnik Deque. Zato lahko deluje kot seznam in deque. |
| Ta razred deluje bolje, ko aplikacija zahteva shranjevanje podatkov in dostop do njih. | Ta razred deluje bolje, ko aplikacija zahteva manipulacijo s shranjenimi podatki. |
Za več informacij si oglejte članek – ArrayList proti LinkedList v Javi
10. Kaj je iterator?
Ogrodje Javine zbirke uporablja iteratorje za pridobivanje elementov enega za drugim. Ta iterator je univerzalen, saj ga je mogoče uporabiti s katero koli vrsto predmeta zbirke. Z Iteratorjem lahko izvajamo operacije branja in odstranjevanja. To je izboljšana različica Enumeration z dodatkom odstranjevanja elementov.
Pri naštevanju elementov v vseh implementiranih vmesnikih Collection framework, kot npr Set , Seznam , Čakalna vrsta , O čem in vsi implementirani razredi Map, je treba uporabiti iterator. Edini kazalec, ki je na voljo za celotno ogrodje zbirke, je iterator. Z uporabo metode iterator() v vmesniku zbirke lahko ustvarite objekt iteratorja.
Sintaksa:
Iterator itr = c. iterator ();>
Opomba: Tukaj je c kateri koli predmet zbirke. itr je vmesnik Iterator tipa in se nanaša na c.
Za več informacij si oglejte članek – Iteratorji v Javi
11. Kakšna je razlika med Iteratorjem in Enumeration?
Glavna razlika med iteratorjem in enumeracijo je, da imajo iteratorji metodo remove(), medtem ko je enumeracije nimajo. Tako lahko z uporabo Iteratorja manipuliramo s predmeti tako, da jih dodajamo in odstranjujemo iz zbirk. Ker lahko oštevilčenje samo prečka predmete in jih pridobi, se obnaša kot vmesnik samo za branje.
Za več informacij si oglejte članek – Razlika med iteratorjem in naštevanjem
12. Kakšna je razlika med List in Set v Javi
Glavna razlika med seznamom in naborom je, da lahko seznam vsebuje podvojene elemente, medtem ko nabor vsebuje samo edinstvene elemente. Seznam je urejen in ohranja vrstni red predmeta, v katerega so dodani. Komplet je neurejen.
| Seznam | Set |
|---|---|
| Seznam je indeksirano zaporedje. | Set je neindeksirano zaporedje. |
| Seznam dovoljuje podvojene elemente | Komplet ne dovoljuje podvojenih elementov. |
| Do elementov je mogoče dostopati po njihovem položaju. | Dostop do elementov s položajem ni dovoljen. |
| Shranite lahko več ničelnih elementov. | Ničelne elemente je mogoče shraniti samo enkrat. |
| Implementacije seznamov so ArrayList, LinkedList, Vector, Stack | Implementacije nabora so HashSet, LinkedHashSet. |
Za več informacij si oglejte članek – Razlika med seznamom in naborom v Javi
13. Katere so najboljše prakse za Java Collections Framework?
Sledi nekaj najboljših praks pri uporabi zbirk Java:
- Programi bi morali biti napisani kot vmesniki, ne implementacije, tako da lahko kasneje spreminjamo izvedbo.
- Kadarkoli je mogoče, uporabite Generics, da zagotovite varnost tipov in se izognete ClassCastExceptions.
- Izbira ustrezne vrste zbiranja glede na potrebe. Na primer, če je velikost fiksna, bomo morda želeli uporabiti Array namesto ArrayList. Pri ponavljanju po zemljevidu bi morali uporabiti LinkedHashMap. Set je najboljši način, da se izognete dvojnikom.
- Uporabite nespremenljive razrede, ki jih zagotavlja JDK, kot ključe v Map, da se izognete implementaciji hashCode() in equals().
- Da bi povečali berljivost kode, bi morali uporabiti isEmpty(), namesto da bi iskali velikost zbirke in jo primerjali z nič.
- Namesto pisanja lastne izvedbe uporabite razred pripomočka Zbirke, da namesto tega pridobite zbirke samo za branje, sinhronizirane ali prazne zbirke. Izboljša ponovno uporabo kode, hkrati pa zagotavlja večjo stabilnost.
14. Kaj je prednostna čakalna vrsta v Javi?
PriorityQueues se uporabljajo za obdelavo objektov glede na njihovo prioriteto. Čakalne vrste sledijo algoritmu First-In-First-Out, včasih pa je treba elemente čakalne vrste obdelati glede na njihovo prioriteto, kjer pride v poštev PriorityQueue. Prednostne čakalne vrste temeljijo na prednostnih kopicah.
Elementi prednostne čakalne vrste so razvrščeni v skladu z naravnim vrstnim redom ali s primerjalnikom, ki je na voljo v času gradnje čakalne vrste, odvisno od uporabljenega konstruktorja.

Prednostne čakalne vrste v Javi
Izjava:
public class PriorityQueue extends AbstractQueue implements Serializable where E is the type of elements held in this queue>
Razred implementira vmesnike Serializable, Iterable, Collection in Queue.
15. Kakšna je razlika med seznamom, nizom in zemljevidom v Javi?
| Seznam | Set | Zemljevid |
|---|---|---|
| Vmesnik seznama omogoča podvojene elemente | Komplet ne dovoljuje podvojenih elementov. | Zemljevid ne dovoljuje podvojenih elementov |
| Seznam ohranja vrstni red vstavljanja. | Komplet ne vzdržuje nobenega vrstnega reda vstavljanja. | Zemljevid tudi ne vzdržuje nobenega vrstnega reda vstavljanja. |
| Dodamo lahko poljubno število ničelnih vrednosti. | Toda v nizu skoraj samo ena ničelna vrednost. | Zemljevid dovoljuje največ en ničelni ključ in poljubno število ničelnih vrednosti. |
| Razreda implementacije seznama sta Array List in LinkedList. | Razredi implementacije nabora so HashSet, LinkedHashSet in TreeSet. | Razredi implementacije zemljevidov so HashMap, HashTable, TreeMap, ConcurrentHashMap in LinkedHashMap. |
Za več informacij glejte članek – Razlika med seznamom, naborom in zemljevidom v Javi
16. Kakšna je razlika med čakalno vrsto in skladom?
| Stack | Čakalna vrsta |
|---|---|
| Stacks deluje po principu LIFO, kar pomeni, da bo element, ki je vstavljen nazadnje, prvi element, ki bo odstranjen. | Čakalne vrste delujejo po principu FIFO, kar pomeni, da bo element, ki je prvi vstavljen, prvi element, ki bo odstranjen. |
| V skladih se vstavljanje in brisanje izvaja le od zgoraj. | V čakalnih vrstah se vstavljanje izvede na zadnji strani seznama, brisanje pa na začetku seznama. |
| Operacija vstavljanja se imenuje operacija potiskanja. | Operacija vstavljanja se imenuje operacija v vrsti. |
| Operacija brisanja se imenuje pop operacija. | Operacija brisanja se imenuje operacija odstranitve iz čakalne vrste. |
| Vrh sklada vedno kaže na zadnji element na seznamu, ki je edini kazalec, ki se uporablja za dostop do seznama. | Za dostop do čakalnih vrst se vzdržujeta dva kazalca. Sprednji kazalec kaže na prvi vstavljeni element, zadnji pa na zadnji vstavljeni element. |
17. Kaj je BlockingQueue v Javi?
Vmesnik BlockingQueue v Javi je dodan v Javi 1.5 skupaj z različnimi drugimi sočasnimi pomožnimi razredi, kot so ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList itd. Vmesnik BlockingQueue podpira nadzor pretoka (poleg čakalne vrste) z uvedbo blokiranja, če je BlockingQueue poln ali prazen.
Nit, ki poskuša dodati element v celotno čakalno vrsto, je blokirana, dokler kakšna druga nit ne naredi prostora v čakalni vrsti, bodisi tako, da odstrani enega ali več elementov iz vrste ali popolnoma počisti čakalno vrsto. Podobno blokira nit, ki poskuša izbrisati iz prazne čakalne vrste, dokler druge niti ne vstavijo elementa. BlockingQueue ne sprejema ničelne vrednosti. Če poskusimo postaviti ničelni element v čakalno vrsto, vrže NullPointerException.
Uporaba BlockingQueue

Blokiranje čakalne vrste v Javi
Hierarhija BlockingQueue

Hierarhija čakalne vrste za blokiranje v Javi
Izjava:
public interface BlockingQueue extends Queue>
tukaj, IN je vrsta elementov, shranjenih v zbirki.
Za več informacij si oglejte članek – Vmesnik BlockingQueue v Javi
18. Kaj je hashCode()?

Slika za predstavitev Java Hash Code
metoda hashCode() vrne vrednost hashcode kot celo število. Definiran je v razredu Java Object, ki izračuna zgoščene vrednosti danih vhodnih objektov. Vrednost Hashcode se večinoma uporablja v zbirkah, ki temeljijo na zgoščevanju, kot so HashMap, HashSet, HashTable… itd. To metodo je treba preglasiti v vsakem razredu, ki preglasi metodo equals().
Sintaksa:
public int hashCode() // This method returns the hash code value // for the object on which this method is invoked.>
Za več informacij si oglejte članek – metode equals() in hashCode() v Javi
19. Razlikujte med ArrayList in Vector v Java Collection Framework.
V intervjujih za zbiranje se to vprašanje pogosto postavlja; vendar je Vector sinhroniziran, medtem ko ArrayList ni. ArrayList je hitrejši od Vector. Velikost matrike ArrayList se po potrebi poveča za 50 %, medtem ko se kapaciteta Vectorja podvoji, kadar koli je to potrebno.

Array List proti Vector v Javi
| ArrayList | Vektor |
|---|---|
| ArrayList ni sinhroniziran | Vektor je sinhroniziran. |
| Velikost seznama ArrayList se poveča do 50 % trenutne velikosti polja, če število elementov preseže njegovo zmogljivost. | Velikost seznama ArrayList se poveča do 100 % trenutne velikosti polja, če število elementov preseže njegovo zmogljivost. |
| ArrayList je hiter, ker ni sinhroniziran. | Vector je počasnejši, ker je sinhroniziran. |
| Vmesnik iteratorja se uporablja za prečkanje elementov | Za prečkanje vektorja je mogoče uporabiti vmesnik iteratorja ali enumeration. |
Za več informacij si oglejte članek – Vector proti ArrayList v Javi
20. Razlikujte med Iteratorjem in ListIteratorjem.
| Iterator | ListIterator |
|---|---|
| Elemente v zbirki lahko prečka samo v smeri naprej. | Lahko prečka elemente v zbirki v smeri naprej in nazaj. |
| Pomaga pri prehodu po zemljevidu, seznamu in nizu. | Prečka lahko le List in ne druga dva. |
| Indeksov ni mogoče pridobiti z uporabo Iteratorja. | Ima metode, kot sta nextIndex() in previousIndex() za pridobivanje indeksov elementov kadar koli med prečkanjem seznama. |
| Elementov v zbirki ni mogoče spremeniti ali zamenjati | Elemente lahko spremenimo ali zamenjamo s pomočjo nabora (E e) |
Za več informacij si oglejte članek – Razlika med Iteratorjem in ListIteratorjem
21. Kakšna je razlika med Iteratorjem in Enumeration?
Iterator: Je univerzalni iterator, saj ga lahko uporabimo za kateri koli predmet zbirke. Z uporabo Iteratorja lahko izvajamo operacije branja in odstranjevanja.
Sintaksa:
// Here 'c' is any Collection object. itr is of // type Iterator interface and refers to 'c' Iterator itr = c.iterator();>
Naštevanje: Enumeration (ali enum) je uporabniško definiran podatkovni tip. Uporablja se predvsem za dodeljevanje imen integralnim konstantam, zaradi imen je program enostaven za branje in vzdrževanje.
Sintaksa:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }> | Iterator | Naštevanje |
|---|---|
| Iterator je univerzalni kazalec, saj je uporaben za vse razrede zbirk. | Enumeracija ni univerzalni kazalec, saj velja samo za podedovane razrede. |
| Iterator ima metodo remove(). | Naštevanje nima metode remove(). |
| Iterator lahko izvaja spremembe (npr. z uporabo metode remove(), ki odstrani element iz zbirke med prečkanjem). | Vmesnik za naštevanje deluje kot vmesnik samo za branje, med premikanjem po elementih zbirke ni mogoče spreminjati zbirke. |
| Iterator ni starejši vmesnik. Iterator se lahko uporablja za prečkanje HashMap, LinkedList, ArrayList, HashSet, TreeMap in TreeSet. | Enumeration je podedovan vmesnik, ki se uporablja za prečkanje Vector in Hashtable. |
Za več informacij si oglejte članek – Razlika med iteratorjem in naštevanjem
22. Katere so značilnosti Java Hashmap?
HashMap je podoben HashTable, vendar ni sinhroniziran. Omogoča nam tudi shranjevanje ničelnih ključev, vendar mora obstajati samo en predmet ničelnega ključa in lahko je poljubno število ničelnih vrednosti. Ta razred ne daje nobenih jamstev glede vrstnega reda zemljevida. Če želite uporabiti ta razred in njegove metode, morate uvoziti java.util. HashMap paket ali njegov nadrazred.

HashMap v Javi
Sintaksa:
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable>
Parametri: Zahteva dva parametra, in sicer:
- Vrsta ključev, ki jih vzdržuje ta zemljevid (K)
- Vrsta preslikanih vrednosti (V)
Za več informacij si oglejte članek – HashMap v Javi s primeri
23. Kaj so zbirni vmesniki?
The Zbirka vmesnik je član Java Collections Framework. Je del java.util paket. Je eden od korenskih vmesnikov hierarhije zbirke. Vmesnika zbirke neposredno ne implementira noben razred. Vendar pa je implementiran posredno prek svojih podtipov ali podvmesnikov, kot so seznam, čakalna vrsta in nastavitev.
Na primer, razred HashSet implementira vmesnik Set, ki je podvmesnik vmesnika Collection. Če implementacija zbirke ne izvaja določene operacije, bi morala definirati ustrezno metodo za sprožitev UnsupportedOperationException.
Hierarhija zbiranja:

Zbirni vmesnik v Javi
24. Razložite vmesnik seznama.

Vmesnik razreda v Javi
V Javi vmesnik List omogoča uporabniku shranjevanje urejene zbirke predmetov. Seznam je podrejeni vmesnik zbirke. V zbirki je seznam urejena zbirka predmetov, ki imajo lahko podvojene vrednosti. Ker seznam ohranja vrstni red vstavljanja, omogoča pozicijski dostop in vstavljanje, kar omogoča tudi podvojene vrednosti.
Sintaksa:
public interface List extends Collection ;>
Ta vmesnik seznama izvajajo različni razredi, kot so ArrayList, Vector, Stack itd. Ker vsi podrazredi izvajajo seznam, lahko instanciramo objekt seznama s katerim koli od teh razredov.
primer:
naključno število med 1 in 10
Seznam al = nov ArrayList ();
Seznam ll = nov LinkedList ();
Seznam v = nov vektor ();Kjer je T vrsta predmeta

Seznam matrik v Javi
Razredi, ki izvajajo vmesnik List, so naslednji:
- ArrayList
- LinkedList
- Vektor
- Stack
25. Napišite program za pretvorbo podane matrike v zbirko z metodo asList().
Za pretvorbo podatkov, ki temeljijo na nizu, v podatke, ki temeljijo na zbirki, lahko uporabimo java.util.Arrays razred. Ta razred zagotavlja statično metodo asList(T… a), ki pretvori matriko v zbirko.
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);> >}> }> |
>
>Izhod
Array input: [Kamlesh, Abhay, Abhishek, Shivansh] Converted elements: [Kamlesh, Abhay, Abhishek, Shivansh]>
26. Razlikujte med HashSet in HashMap
| HashSet | HashMap |
|---|---|
| HashSet implementira vmesnik Set | HashMap implementira vmesnik Map |
| Dvojniki niso dovoljeni | Da, podvojene vrednosti so dovoljene, vendar podvojen ključ ni dovoljen |
| Navidezne vrednosti so dovoljene v HashSet. | V HashMap niso dovoljene nobene navidezne vrednosti. |
| Med operacijo dodajanja je potreben en sam objekt | Med operacijo dodajanja sta potrebna 2 objekta |
| Hitrost je sorazmerno počasnejša od HashMap | Hitrost je sorazmerno večja kot HashSet, ker je bila tukaj uporabljena tehnika zgoščevanja. |
| Imeti eno samo ničelno vrednost | En sam ničelni ključ in poljubno število ničelnih vrednosti |
| Za vstavljanje se uporablja metoda Add(). | Za vstavljanje se uporablja metoda put (). |
Za več informacij si oglejte članek – Razlika med HashMap in HashSet
27. Razlikujte med HashSet in HashTable.
| HashSet | HashTable |
|---|---|
| HashSet dovoljuje elemente NULL | HashTable ne dovoljuje elementov NULL. |
| Ni zajamčeno, da bodo predmeti, ki jih vstavite v HashSet, vstavljeni v istem vrstnem redu. Objekti so vstavljeni na podlagi njihove zgoščene kode. LinkedHashSet se lahko uporablja za vzdrževanje reda. | HashTable ne vzdržuje vrstnega reda vstavljanja. |
| HashSet ni sinhroniziran, vendar ga je mogoče sinhronizirati zunaj. | HashTable je sinhroniziran. |
| metoda add() se uporablja za vstavljanje v HashSet | metoda put() se uporablja za vstavljanje v HashTable |
28. Kakšna je privzeta velikost faktorja obremenitve v zbirki, ki temelji na zgoščevanju?
Ko se faktor obremenitve poveča, se zmogljivost poveča, tako da operativna kompleksnost HashMap ostane O(1), če razmerje med trenutnim elementom in začetno zmogljivostjo preseže prag. Pomen operativne zapletenosti O(1) pomeni, da operacije iskanja in vstavljanja trajajo konstanten čas. Privzeta velikost faktorja obremenitve je 0,75 . Privzeta zmogljivost se izračuna tako, da se začetna zmogljivost pomnoži s faktorjem obremenitve.
Za več informacij si oglejte članek – Faktor obremenitve v HashMap v Javi s primeri
Vprašanja za intervju z zbirko Java za izkušene
29. Kakšna je razlika med Comparable in Comparator v Javi?
Java ponuja dva vmesnika za razvrščanje objektov z uporabo podatkovnih članov razreda:
- Primerljivo
- Primerjalnik
| Primerljivo | Primerjalnik |
|---|---|
| Vmesnik Comparable ponuja eno samo zaporedje razvrščanja. | Vmesnik Comparator ponuja več zaporedij razvrščanja. |
| Dejanski razred je spremenjen s primerljivim vmesnikom | Vmesnik Comparator ne spremeni dejanskega razreda. |
| metoda compareTo() se uporablja za razvrščanje elementov. | metoda compare() se uporablja za razvrščanje elementov. |
| Comparable je prisoten v paketu java.lang | Primerjalnik je prisoten v paketu java.util |
Za več informacij si oglejte članek – Primerljivo proti primerjalnemu v Javi
30. Kakšna je razlika med fail-fast in failsafe?
Iteratorji v Javi se uporabljajo za ponavljanje objektov zbirke. Fail-Fast iteratorji takoj vržejo ConcurrentModificationException če obstaja strukturna sprememba zbirke. Strukturna sprememba pomeni dodajanje ali odstranjevanje katerega koli elementa iz zbirke, medtem ko nit ponavlja to zbirko. Iterator na ArrayList in HashMap razredi so nekateri primeri Iteratorja, ki je hiter za napake.
| Fail-Fast | Varen pred napakami |
|---|---|
| ConcurrentModificationException se vrže med spreminjanjem predmeta med postopkom ponovitve. | Nobena izjema ni vržena |
| Fail-Fast med postopkom potrebuje manj pomnilnika. | Varni iterator med postopkom zahteva več pomnilnika. |
| Klonirani objekt se med postopkom ponovitve ne ustvari. | Klonirani predmet ali kopija se ustvari med postopkom ponovitve. |
| Fail-Fast ne dovoljuje spreminjanja med postopkom ponavljanja. | Fail-Safe omogoča spreminjanje med postopkom ponavljanja. |
| Fail-Fast je hiter, | Fail-Safe je nekoliko počasnejši od fail fast. |
| Primeri: ArrayList, Vector, HashMap, HashSet itd. | Primeri: ConcurrentHashMap, CopyOnWriteArrayList itd. |
Za več informacij si oglejte članek – Fail Fast in Fail Safe iteratorji v Javi
31. Napišite program za ponavljanje seznama z uporabo lambda izraza.
Ponovitev je mogoče izvesti z uporabo a lambda izraz.
Sintaksa:
list_name.forEach(variable->{//blok kode})> 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); });> >}> }> |
>
>Izhod
Geeks for Geeks>
Za več informacij si oglejte članek – Iteracija po seznamu v Javi
32. Kaj je IdentityHashMap?
IdentityHashMap implementira vmesnik Map z uporabo Hashtable, pri čemer primerja ključe (in vrednosti) z uporabo referenčne enakosti namesto objektne enakosti. Ta razred izvaja vmesnik Map, vendar namerno krši splošno pogodbo Map, ki zahteva primerjavo predmetov z uporabo metode equals(). Ta razred se uporablja, ko uporabnik dovoli primerjavo objektov z uporabo referenc. Spada v paket java.util.
Za več informacij si oglejte članek – Razred IdentityHashMap v Javi
33. Napišite program v Javi za prikaz vsebine HashTable z uporabo oštevilčenja.
Razred hashtable implementira hash tabelo, ki preslika ključe v vrednosti. Vsak objekt, ki ni ničelni, se lahko uporabi kot ključ ali kot vrednost. Za uspešno shranjevanje in pridobivanje objektov iz zgoščevalne tabele morajo objekti, ki se uporabljajo kot ključi, implementirati metodo hashCode in metodo equals. Spodaj je program za prikaz vsebine HashTable z uporabo oštevilčenja:
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());> >}> >}> }> |
>
>Izhod
Geeks for Geeks>
34. Napišite program v Javi, da dobite pogled zbirke vrednosti, prisotnih v HashMap.
Javin razred HashMap ima metodo java.util.HashMap.values() za ustvarjanje zbirk iz vrednosti HashMap. V bistvu vrne pogled zbirke vrednosti HashMap.
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());> >}> }> |
>
>Izhod
Initial Mappings are: {0=Welcome, 1=to, 2=Geeks, 3=4, 4=Geeks} The collection is: [Welcome, to, Geeks, 4, Geeks]> Za več informacij si oglejte članek – Metoda HashMap values() v Javi
35. Napišite program za združitev dveh ArrayList v en sam ArrayList.
Glede na dva ArrayLista v Javi je naša naloga združiti te ArrayListe.
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);> >}> }> |
>
>Izhod
ArrayList 1: [Geeks, For, ForGeeks] ArrayList 2: [GeeksForGeeks, A computer portal] Joined ArrayLists: [Geeks, For, ForGeeks, GeeksForGeeks, A computer portal]>
Za več informacij si oglejte članek – Združite dva seznama ArrayList v Javi
36. Kako lahko sinhronizirate ArrayList v Javi?
Z metodo Collections.synchronizedList() lahko svoje zbirke sinhroniziramo v Javi. SynchronizedList() vrne sinhroniziran (nitno varen) seznam, podprt z izborom.
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());> >}> >}> >}> }> |
>
>Izhod
Eat Coffee Code Sleep Repeat>
37. Kaj je razred lastnosti v Javi?
Razred lastnosti je podrazred Hashtable. Razred lastnosti shrani seznam vrednosti, katerih ključ je niz in katerih vrednost je prav tako niz. Lastnosti lahko definirajo druge sezname razredov lastnosti, vendar so privzete lastnosti.
Lastnosti razreda Properties:
- Lastnost je podrazred Hashtable.
- Datoteka Lastnosti se uporablja za shranjevanje in pridobivanje vrste podatkov niza za seznam vrednosti, kjer je ključ niz in vrednost je prav tako niz.
- Če prvotni seznam lastnosti ne vsebuje določene ključne lastnosti, se namesto tega preišče privzeti seznam lastnosti.
- Objekte lahko deli več niti brez zunanje sinhronizacije.
- Razred lastnosti lahko uporabite za pridobivanje lastnosti sistema.
Za več informacij si oglejte članek – Razred lastnosti v Javi
38. Kaj se zgodi, če uporabite HashMap v večnitni aplikaciji Java?
Če v okolju z več nitmi več niti strukturno spremeni zemljevid, kot je dodajanje, odstranjevanje ali spreminjanje preslikav, se lahko poškoduje notranja podatkovna struktura HashMap in lahko pride do nekaterih manjkajočih povezav, nepravilnih vnosov in sam zemljevid lahko postanejo popolnoma neuporabni. Zato ne smete uporabljati HashMap v sočasni aplikaciji; namesto tega uporabite ConcurrentHashMap ali Hashtable, ki je varen za niti. ConcurrentHashMap vključuje vse metode Hashtable kot tudi popolno sočasnost pridobivanja in posodobitev.
Kako je ThreadSafeConcurrentHashMap postal varen za niti?
- Razred java.util.Concurrent.ConcurrentHashMap zagotavlja varnost niti tako, da zemljevid razdeli na segmente, kar omogoča zaklepanje samo enkrat na segment, tj. enkrat za vsako nit.
- Operacija branja v ConcurrentHashMap ne zahteva zaklepanja.
Za več informacij si oglejte članek – Kako ConcurrentHashMap doseže varnost niti v Javi?
39. Kaj se bo zgodilo, če dva različna ključa HashMap vrneta isto hashcode()?
Ko dva različna ključa HashMap vrneta isto hash kodo, bosta končala v istem vedru; zato bo prišlo do kolizij. n primeru kolizije, tj. indeks dveh ali več vozlišč je enak, vozlišča so združena s seznamom povezav, tj. prvo vozlišče se sklicuje na drugo vozlišče, drugo pa na tretje in tako naprej.
Za več informacij glejte članek – Notranje delovanje HashMap v Javi
40. Kaj je WeakHashMap?
WeakHashMap implementira vmesnik Map. Za razliko od HashMap WeakHashMap omogoča zbiranje smeti, tudi če predmet, naveden kot ključ, ne vsebuje nobenih referenc, čeprav je povezan z WeakHashMap. Z drugimi besedami, Garbage Collector je boljši od WeakHashMap.
Za več informacij si oglejte članek – Hashmap proti WeakHashMap v Javi
41. Kaj je UnsupportedOperationException?
V kontekstu API-jev ali implementacij seznamov je UnsupportedOperationException pogosta izjema. Izjema se vrže, ko zahtevane operacije ni mogoče izvesti. Ta razred je član Java Collections Framework.
Sintaksa:
public class UnsupportedOperationException extends RuntimeException>
Za več informacij si oglejte članek – UnsupportedOperationException
42. Kako narediti zbirko samo za branje v Javi?
Ustvarjanje zbirke samo za branje vključuje omejitev predmeta samo na pridobivanje podatkov in ne na dodajanje ali odstranjevanje podatkov. Java ima različne metode za različne vrste zbirk, kot so unmodifiableCollection(), unmodifiableMap(), ununmodifiableSet() itd. java.util. Razred zbirk definira vse metode. Metoda unmodifiableCollection() ustvari zbirko samo za branje. Zahteva sklic na razred zbirke. Če imamo objekt Set Interface, lahko uporabimo ununmodifiableSet() da naredite samo za branje.
Za več informacij si oglejte članek – Kako narediti zbirko samo za branje v Javi?
43. Razlika med PriorityQueue in TreeSet v Javi?
| PriorityQueue | TreeSet |
|---|---|
| PriorityQueue je na voljo v JDK 1.5. | TreeSet je na voljo v JDK 1.4. |
| Podatkovna struktura, ki jo uporablja PriorityQueue, je Queue | Podatkovna struktura, ki jo uporablja TreeSet, je Set. |
| Podvojeni elementi so dovoljeni. | Podvojeni elementi niso dovoljeni. |
| Razen korenskega elementa ostali elementi ne sledijo nobenemu posebnemu vrstnemu redu v PriorityQueue. | V TreeSet ostanejo vsi elementi v razvrščenem vrstnem redu. |
| Z uporabo PriorityQueue lahko pridobimo največji ali najmanjši element v O(1) času. | TreeSet ne ponuja načina za pridobivanje največjega ali najmanjšega elementa v O(1) času, ker pa so v razvrščenem vrstnem redu, dobi prvi ali zadnji element v O(1) času. |
Za več informacij si oglejte članek – Razlika med PriorityQueue in TreeSet
44. Kaj je diamantni operater v Javi?
Diamantni operaterji se uporabljajo za poenostavitev uporabe generikov pri ustvarjanju objektov, hkrati pa se izogibajo nepreverjenim opozorilom v programu. Ko je bil v Javi 7 uveden operator Diamond, lahko ustvarimo objekt brez omembe splošnega tipa na desni strani izraza, kot je prikazano spodaj.
Sintaksa:
List list = new ArrayList();>
Za več informacij si oglejte članek – Diamantni operater
45. Kako TreeMap deluje v Javi?
TreeMap shrani pare ključ-vrednost, vendar TreeMap razvrsti ključe naraščajoče in ne padajoče kot HashMap. Odvisno od tega, kateri konstruktor je uporabljen, bo TreeMap razvrščen na podlagi njegovih ključev ali primerjalnika. V TreeMap so elementi razvrščeni na podlagi rdeče-črnega drevesa. Rdeče-črno drevo je samouravnotežno binarno iskalno drevo, kjer ima vsako vozlišče dodaten bit in ta bit se pogosto razlaga kot barva (rdeča ali črna). Te barve se uporabljajo za zagotovitev, da drevo ostane uravnoteženo med vstavljanjem in brisanjem.

Struktura vozlišča v Javi
Za več informacij si oglejte članek – Notranje delovanje TreeMap v Javi
46. Seznam načinov za ponavljanje zemljevida v Javi?
Razred HashMap zagotavlja vmesnik Java Map s shranjevanjem podatkov v parih (ključ, vrednost) in dostopom do njih z indeksom druge vrste. Za uporabo tega razreda je potreben uvoz java.util.HashMap paket ali njegov nadrazred.
Obstaja veliko načinov za ponavljanje HashMapa, od katerih jih je 5 navedenih spodaj:
- Iterirajte skozi HashMap EntrySet z uporabo iteratorjev.
- Iteracija skozi HashMap KeySet z uporabo Iteratorja.
- Ponovi HashMap z uporabo zanke za vsak.
- Ponavljanje skozi HashMap z uporabo lambda izrazov.
- Preglejte HashMap z uporabo Stream API-ja.
Za več informacij si oglejte članek – Kako ponoviti HashMap v Javi
47. Kaj je CopyOnWriteArrayList v Javi?

CopyOnWriteArrayList v Javi
JDK 1.5 je predstavil izboljšano različico seznama ArrayList, imenovano CopyOnWriteArrayList, kjer so vse spremembe (dodaj, nastavi, odstrani itd.) izvedene z novo kopijo. Najdete ga v java.util.concurrent. Je podatkovna struktura, ustvarjena za uporabo v sočasnem okolju. V okolju, ki temelji na nitih, je CopyOnWriteArrayList namenjen pogostemu branju in redkemu posodabljanju. CopyOnWriteArrayList je nitno varna različica ArrayList.
Za več informacij si oglejte članek – CopyOnWriteArrayList v Javi
48. Kaj je EnumMap v Javi?
EnumMap je implementacija vmesnika Map, ki je specifičen za vrste oštevilčenja. Razred EnumMap je član ogrodja zbirk Java in ni sinhroniziran. Razširja AbstractMap in implementira vmesnik Map v Javi. EnumMap spada v paket java.util.
Sintaksa:
javni razred EnumMap
razširi AbstractMap implementira Serializable, Cloneable // K mora razširiti Enum, kar uveljavlja zahtevo, da morajo biti ključi navedene vrste enum.
Parametri:
- Vrsta ključnega predmeta
- Vrsta predmeta vrednosti

EnumMap v Javi
Za več informacij si oglejte članek – Razred EnumMap v Javi
49. Kako interno deluje Hashmap?
HashMap deluje na principu zgoščevanja. HashMap vsebuje matriko Node in Node lahko predstavlja razred z naslednjimi objekti:
- int hash
- K ključ
- V vrednost
- Vozlišče naslednje
Notranje delovanje HashMap:
- Zgoščevanje
- Vedra
- Izračun indeksa v Hashmapu
Za več informacij si oglejte članek – Notranje delovanje HashMap v Javi
petdeset. Zakaj se iterator v hashmapu šteje za hitro napako?
fail-fast iteratorji takoj vržejo sočasne izjeme spreminjanja, če katera koli nit od zunaj poskuša spremeniti zbirko, na kateri ponavljajo. Funkcija hitre napake zagotavlja, da iterator takoj odpove, če zazna, da bo kakršna koli sprememba zbirke povzročila nepravilno vedenje v prihodnosti.
Fail hitro funkcija zagotavlja, da če iterator meni, da bi sprememba zbirke kadar koli v prihodnosti povzročila nepravilno vedenje, takoj ne uspe.
primer:
Java
sestra kat timpf
// 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>);> >}> >}> >}> }> |
>
>
Izhod:
[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)>
Zaključek
Zbirke Java je pomembno razumeti za razvijalce ali programerje Java, ker se Java pogosto uporablja v različnih panogah. Za razvijalce je pomembno, da dobro razumejo temeljne koncepte zbirk Java. Java je eden najbolj razširjenih jezikov v vrhunskih podjetjih, kot je npr Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazon , itd. Če želite vstopiti v ta podjetja ali katera koli druga IT podjetja, morate obvladati ta večinoma zastavljena vprašanja za intervjuje Java Collections, da lahko razbijete njihovo spletno ocenjevanje in tehnični intervju, ki temelji na Javi.
Če želite vaditi vprašanja o kodiranju, Programi za zbiranje JAVA je lahko koristen vir.
Vprašanja za intervju z zbirkami Java – pogosta vprašanja
1. Kaj so zbirke v vprašanjih za intervjuje v Javi?
Zbirka v Javi je ogrodje, ki se uporablja za shranjevanje in upravljanje zbirk predmetov.
2. Kateri so 4 zbirni razredi v Javi?
V Javi je veliko zbirk, vendar so najbolj uporabljene zbirke:
- ArrayList
- LinkedList
- HashSet
- Stack
3. Ali ima lahko HashMap podvojene ključe?
Ne, HashMap ne more imeti podvojenih ključev. Ker je HashMap ena od zbirk v Javi, shrani vrednost v obliki ključ-vrednost in vsak ključ ima svojo lastno vrednost. Torej, ker noben ključ ne more imeti dveh vrednosti, pomeni, da v HashMap ne moremo imeti podvojenih ključev.
4. Zakaj polje ni zbirka?
Niz ni zbirka, vse zaradi razlike v funkcionalnosti med zbirkami in nizi, od katerih jih je nekaj omenjenih spodaj:
- Ko je deklarirana velikost matrike, ni več mogoče spremeniti
- Matrike lahko vsebujejo le elemente homogenih podatkovnih vrst.
- Matrika lahko vsebuje tako primitivne podatkovne tipe kot objekte, medtem ko lahko v zbirkah vsebuje samo ovojne objekte.