logo

„Java Collections“ interviu klausimai ir atsakymai

Java kolekcijos sistema buvo pristatytas JDK 1.2 kuriame yra visos kolekcijos klasės ir sąsajos. Java kolekcija yra sistema, kuri suteikia mechanizmą saugoti ir manipuliuoti objektų kolekcija. Tai leidžia kūrėjams pasiekti supakuotas duomenų struktūras ir algoritmus, skirtus manipuliuoti duomenimis.

Šiame straipsnyje apžvelgėme 50 geriausių „Java Collections“ interviu klausimai ir Atsakymai kurios apima viską nuo pagrindinių iki pažangių Java rinkinių koncepcijų, tokių kaip navigacijos rinkinys, WeakHashMap, srautai Lambdas ir kt. Nesvarbu, ar esate šviežesnis arba an patyręs Java kūrėjas , šie „Java“ kolekcijų interviu klausimai suteikia jums viso pasitikėjimo, kurio reikia kitam „Java“ interviu.



„Java Collections“ interviu klausimai

„Java Collections“ interviu klausimai

50 klausimų suskirstėme į dvi dalis: Patyrusiems ir Naujokams. Pradėkime nuo klausimų pirmakursiams.

Turinys



„Java“ kolekcijos interviu klausimai pirmakursiams

1. Kas yra kolekcija Java?

Terminas kolekcija nurodo objektų grupę, vaizduojamą kaip vienas vienetas. Klasės Java kolekcijos klasių hierarchijoje yra suskirstytos į dvi dalis šaknis sąsajos: Kolekcija (java.util.Collection) ir Žemėlapis (java.util.Map) . Sąlygos, su kuriomis susidursite mokydamiesi apie kolekciją Java:

  • Kolekcijos struktūra: „Java“ kolekcijos sistema apibrėžia klases ir sąsajas, skirtas objektų grupėms pateikti kaip vieną objektą. C++ kūrėjai gali palyginti kolekcijos sistemą su STL (standartinė šablonų biblioteka) ir „Container Framework“ su rinkinio sistema, jei jie yra iš C++ fono.
  • Kolekcijos sąsaja: Klasės sąsaja nurodo, ką ji turėtų daryti, o ne kaip. Kitaip tariant, tai yra klasės planas. Šioje sąsajoje pateikiami dažniausiai naudojami metodai visiems kolekcijos objektams, kurie yra kolekcijos sistemos dalis. Arba jis vaizduoja atskirą objektą kaip visumą.
  • Kolekcijos klasė: „Collection Framework“ narys yra java.util paketo dalis. Kolekcijos objektas šioje klasėje turi daug naudingų metodų.

2. Kas yra „Java“ sistema?

Karkasai yra rinkiniai klases ir sąsajos kurios suteikia paruoštą architektūrą. Norint įdiegti naujas funkcijas ar klases, nebūtina apibrėžti sistemos. Dėl to optimalus į objektą orientuotas dizainas apima sistemą, kurioje yra klasių, kurios visos atlieka panašias užduotis, rinkinys. Sistema gali būti naudojama įvairiais būdais, pavyzdžiui, iškviečiant jos metodus, išplečiant ir teikiant atgalinius skambučius, klausytojus ir kitus diegimus. Kai kurios populiarios „Java“ sistemos yra:

  • Pavasaris
  • Užmigti
  • Atramos
  • „Google Web Toolkit“ (GWT)
  • „JavaServer Faces“ (JSF)

3. Kuo Java skiriasi masyvas ir kolekcija?

Masyvai yra panašaus tipo kintamųjų, turinčių bendrą pavadinimą Java, rinkinys. Yra keletas skirtumų tarp „Java“ ir „C/C++“ masyvų. Kita vertus, kolekcijos yra atskirų objektų grupės, kurios sudaro vieną objektą, žinomą kaip objektų kolekcija.



Masyvai

Kolekcija

Masyvai yra fiksuoto dydžio, tai yra, kai sukuriame masyvą, negalime padidinti ar sumažinti pagal savo reikalavimus. Kolekcija yra auginama gamtoje ir yra pagrįsta mūsų reikalavimais. Galime padidinti arba sumažinti dydį.
Kalbant apie atmintį, masyvai nerekomenduojami naudoti. Kalbant apie atmintį, rekomenduojama naudoti kolekcijas.
Kalbant apie našumą, rekomenduojama naudoti masyvus. Kalbant apie našumą, kolekcijos nerekomenduojamos naudoti.
Masyvai gali turėti tik vienarūšių duomenų tipų elementus. Kolekcijoje gali būti tiek vienarūšių, tiek nevienalyčių elementų.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp masyvų ir kolekcijų Java

4. Kokios yra įvairios sąsajos, naudojamos Java Collections Framework?

Kolekcija žinoma kaip kolekcijų hierarchijos šaknis. Kolekcijos yra objektų grupės, žinomos kaip elementai. „Java“ platforma nepateikia tiesioginio šios sąsajos diegimo, tačiau „Collection“ sąsają įgyvendina „List“ ir „Set“ klasės.

  • Kolekcijos sąsaja
  • Sąrašo sąsaja
  • Nustatykite sąsają
  • Eilės sąsaja
  • Ištraukimo iš eilės sąsaja
  • Žemėlapio sąsaja

5. Paaiškinkite Java rinkinio sistemos hierarchiją.

Visos klasės ir sąsajos, kurių reikalauja rinkimo sistema, yra paslaugų pakete (java. util). Kolekcijos sistemos turi sąsają, vadinamą kartojama sąsaja, kuri leidžia iteratoriui kartoti visas kolekcijas. Be šios sąsajos, pagrindinė rinkinio sąsaja veikia kaip rinkimo sistemos šaknis. Visos kolekcijos išplečia šią kolekcijos sąsają ir taip praplečia iteratoriaus savybes ir šios sąsajos metodus. Toliau pateiktame paveikslėlyje parodyta kolekcijos sistemos hierarchija.

Java kolekcijos hierarchija

6. Kokie yra kolekcijos Framework privalumai?

Kolekcijos sistemos privalumai: Kadangi rinkimo sistemos nebuvimas sukėlė pirmiau minėtus trūkumus, toliau pateikiami rinkimo sistemos pranašumai.

  • Nuosekli API: API turi pagrindinį sąsajų rinkinį, pvz Kolekcija , Nustatyti , Sąrašas , arba Žemėlapis , turi visos klasės (ArrayList, LinkedList, Vector ir tt), kurios įgyvendina šias sąsajas kai kurie bendras metodų rinkinys.
  • Sumažina programavimo pastangas: Programuotojas neturi jaudintis dėl kolekcijos dizaino, jis gali sutelkti dėmesį į geriausią jos panaudojimą savo programoje. Todėl sėkmingai įgyvendinta pagrindinė Objektinio programavimo (t.y.) abstrakcijos koncepcija.
  • Padidina programos greitį ir kokybę: Padidina našumą suteikdamas didelio našumo naudingų duomenų struktūrų ir algoritmų įgyvendinimą, nes tokiu atveju programuotojui nereikia galvoti apie geriausią konkrečios duomenų struktūros įgyvendinimą. Jis gali tiesiog panaudoti geriausią įgyvendinimą, kad drastiškai padidintų savo algoritmo / programos našumą.

7. Kas yra ArrayList Java?

„ArrayList“ yra „Java“ rinkinio sistemos dalis ir yra java.util paketo klasė. Tai suteikia mums dinaminius „Java“ masyvus. Pagrindiniai ArrayList pranašumai yra tai, kad jei deklaruojame masyvą, reikia paminėti dydį, bet ArrayList nereikia minėti ArrayList dydžio, jei norite paminėti dydį, tada galite tai padaryti.

Masyvo sąrašas

Masyvo sąrašo vaizdas

Norėdami gauti daugiau informacijos, skaitykite straipsnį - ArrayList Java

8. Kuo skiriasi kolekcija ir kolekcijos?

Kolekcija Kolekcijos
Tai sąsaja. Tai komunalinių paslaugų klasė.
Jis naudojamas atskirų objektų grupei pavaizduoti kaip vieną vienetą. Jis apibrėžia kelis naudingumo metodus, kurie naudojami rinkimui atlikti.
Kolekcija yra sąsaja, kurioje yra statinis metodas nuo java8. Sąsajoje taip pat gali būti abstrakčių ir numatytųjų metodų. Jame yra tik statiniai metodai.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Kolekcija vs kolekcijos Java su pavyzdžiu

9. Kuo skiriasi ArrayList ir LinkedList Java rinkimo sistemoje?

ArrayList vs LinkedList

ArrayList ir LinkedList

ArrayList

LinkedList

Ši klasė naudoja dinaminį masyvą elementams saugoti. Įvedus bendrinius vaistus, ši klasė palaiko visų tipų objektų saugojimą. Šioje klasėje elementams saugoti naudojamas dvigubai susietas sąrašas. Panašiai kaip ArrayList, ši klasė taip pat palaiko visų tipų objektų saugojimą.
Manipuliavimas „ArrayList“ užtrunka daugiau laiko dėl vidinio diegimo. Kai pašaliname elementą viduje, masyvas yra perkeliamas ir atminties bitai perkeliami. Manipuliuoti LinkedList reikia mažiau laiko, palyginti su ArrayList, nes dvigubai susietame sąraše nėra atminties bitų perkėlimo koncepcijos. Sąrašas perkeliamas ir nuorodos nuoroda keičiama.
Ši klasė įgyvendina sąrašo sąsają. Todėl tai veikia kaip sąrašas. Ši klasė įgyvendina ir sąrašo sąsają, ir Deque sąsają. Todėl jis gali veikti kaip sąrašas ir deque.
Ši klasė veikia geriau, kai programa reikalauja saugoti duomenis ir juos pasiekti. Ši klasė veikia geriau, kai programai reikia manipuliuoti saugomais duomenimis.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - ArrayList vs LinkedList Java

10. Kas yra iteratorius?

„Java“ kolekcijos sistema naudoja iteratorius, kad gautų elementus po vieną. Šis iteratorius yra universalus, nes jį galima naudoti su bet kokio tipo Kolekcijos objektu. Naudodami Iteratorių galime atlikti ir skaitymo, ir pašalinimo operacijas. Tai patobulinta Enumeration versija su pašalintais elementais.

Išvardijant elementus visose Kolekcijos sistemose įdiegtos sąsajos, pvz Nustatyti , Sąrašas , Eilė , Apie ką , ir visos įdiegtos žemėlapio klasės, turi būti naudojamas Iteratorius. Vienintelis visoje rinkinio sistemoje pasiekiamas žymeklis yra iteratorius. Naudodami iterator() metodą kolekcijos sąsajoje, galite sukurti iteratoriaus objektą.

Sintaksė:

Iterator itr = c.  iterator  ();>

Pastaba: Čia c yra bet koks Kolekcijos objektas. itr yra Iteratoriaus sąsajos tipo ir nurodo c.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Iteratoriai Java

11. Kuo skiriasi iteratorius ir išvardijimas?

Pagrindinis skirtumas tarp iteratoriaus ir išvardijimo yra tas, kad iteratoriai turi pašalinimo () metodą, o išvardijimai ne. Taigi, naudodami Iteratorių, galime manipuliuoti objektais pridėdami ir pašalindami juos iš kolekcijų. Kadangi surašymas gali tik kirsti objektus ir juos gauti, jis veikia kaip tik skaitoma sąsaja.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp „Iteratoriaus“ ir „Enumeration“.

12. Kuo skiriasi sąrašas ir Set programoje Java

Pagrindinis skirtumas tarp sąrašo ir rinkinio yra tas, kad sąraše gali būti pasikartojančių elementų, o rinkinyje yra tik unikalūs elementai. Sąrašas yra užsakytas ir palaiko objekto, prie kurio jie pridedami, tvarką. Rinkinys netvarkingas.

Sąrašas

Nustatyti

Sąrašas yra indeksuota seka. Rinkinys yra neindeksuota seka.
Sąrašas leidžia pasikartojančius elementus Rinkinys neleidžia pasikartojančių elementų.
Elementus galima pasiekti pagal jų padėtį. Padėties prieiga prie elementų neleidžiama.
Galima saugoti kelis nulinius elementus. Nuliniai elementai gali būti saugomi tik vieną kartą.
Sąrašo diegimai yra ArrayList, LinkedList, Vector, Stack Rinkinio diegimai yra HashSet, LinkedHashSet.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp sąrašo ir rinkinio Java

13. Kokia yra geriausia „Java Collections Framework“ praktika?

Štai keletas geriausių „Java“ kolekcijų naudojimo praktikos pavyzdžių:

  • Programos turėtų būti parašytos kaip sąsajos, o ne kaip diegimas, todėl vėliau galime modifikuoti diegimą.
  • Kai tik įmanoma, naudokite Generics, kad užtikrintumėte tipo saugumą ir išvengtumėte ClassCastExceptions.
  • Tinkamo kolekcijos tipo pasirinkimas pagal poreikį. Pavyzdžiui, jei dydis yra fiksuotas, galime naudoti masyvą, o ne ArrayList. Kai kartojame žemėlapį, turėtume naudoti LinkedHashMap. Rinkinys yra geriausias būdas išvengti dublikatų.
  • Naudokite JDK pateiktas nekintamas klases kaip raktus žemėlapyje, kad išvengtumėte hashCode() ir equals() diegimo.
  • Norėdami padidinti kodo skaitomumą, turėtume naudoti isEmpty(), o ne rasti rinkinio dydį ir lyginti jį su nuliu.
  • Užuot rašę savo diegimą, naudokite rinkinių paslaugų klasę, kad gautumėte tik skaitomus, sinchronizuotus arba tuščius rinkinius. Tai pagerina pakartotinį kodo naudojimą ir užtikrina didesnį stabilumą.

14. Kas yra prioritetinė eilė Java?

PriorityQueues naudojamos apdoroti objektus pagal jų prioritetą. Eilės vadovaujasi „First-In-First-Out“ algoritmu, tačiau kartais eilės elementus reikia apdoroti pagal jų prioritetą, todėl pradeda veikti „PriorityQueue“. Prioritetinės eilės yra pagrįstos prioritetų krūvomis.

Prioritetinės eilės elementai užsakomi pagal natūralų eilės tvarką arba eilės sudarymo metu pateiktą Palygintuvą, priklausomai nuo to, koks konstruktorius naudojamas.

„Java“ prioritetinės eilės

„Java“ prioritetinės eilės

Deklaracija:

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

Klasė įgyvendina Serializable, Iterable, Collection ir Queue sąsajas.

15. Kuo java skiriasi sąrašas, rinkinys ir žemėlapis?

Sąrašas

Nustatyti

Žemėlapis

Sąrašo sąsaja leidžia pasikartojančius elementus

Rinkinys neleidžia pasikartojančių elementų.

Žemėlapis neleidžia pasikartojančių elementų

Sąraše palaikoma įterpimo tvarka.

vieša vs privati ​​java

Rinkinys nepalaiko jokios įterpimo tvarkos.

Žemėlapyje taip pat nėra jokios įterpimo tvarkos.

Galime pridėti bet kokį nulinių reikšmių skaičių.

Tačiau rinkinyje beveik tik viena nulinė reikšmė.

Žemėlapyje leidžiama naudoti daugiausia vieną nulinį raktą ir bet kokį nulinių reikšmių skaičių.

Sąrašo diegimo klasės yra Array List ir LinkedList.

Rinkinio diegimo klasės yra HashSet, LinkedHashSet ir TreeSet.

Žemėlapio diegimo klasės yra HashMap, HashTable, TreeMap, ConcurrentHashMap ir LinkedHashMap.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp sąrašo, rinkinio ir žemėlapio „Java“.

16. Kuo skiriasi „Queue“ ir „Stack“?

Stack

Eilė

Stacks veikia LIFO principu, o tai reiškia, kad elementas, įdėtas paskutinis, bus pirmasis, kuris bus pašalintas. Eilės veikia FIFO principu, o tai reiškia, kad pirmas įterptas elementas bus pirmasis, kuris bus pašalintas.
Į krūvas įterpimas ir trynimas vyksta tik iš viršaus. Eilėse įterpimas atliekamas sąrašo gale, o ištrynimas atliekamas sąrašo priekyje.
Įterpimo operacija vadinama stūmimo operacija. Įterpimo operacija vadinama eilės operacija.
Ištrynimo operacija vadinama pop operacija. Ištrynimo operacija vadinama ištraukimo eilės operacija.
Krūvos viršus visada nurodo paskutinį sąrašo elementą, kuris yra vienintelis sąrašui pasiekti naudojamas rodyklė. Prieigai prie eilių išlaikomos dvi rodyklės. Priekinis rodyklė nukreipia į pirmą įterptą elementą, o galinė – į paskutinį įterptą elementą.

17. Kas yra BlockingQueue Java?

„Java“ „BlockingQueue“ sąsaja yra įtraukta į „Java 1.5“ kartu su įvairiomis kitomis tuo pačiu metu veikiančiomis paslaugų klasėmis, tokiomis kaip „ConcurrentHashMap“, „Counting Semaphore“, „CopyOnWriteArrrayList“ ir kt. „BlockingQueue“ sąsaja palaiko srauto valdymą (be eilės), įvedant blokavimą, jei „BlockingQueu“ pilna arba tuščia.

Gija, bandanti įtraukti elementą į eilę pilnoje eilėje, blokuojama tol, kol kuri nors kita gija nepalieka vietos eilėje, pašalinant vieną ar daugiau elementų arba visiškai išvalant eilę. Panašiai jis blokuoja giją, bandančią ištrinti iš tuščios eilės, kol kai kurios kitos gijos įterpia elementą. BlockingQueue nepriima nulinės reikšmės. Jei bandome įtraukti į eilę nulinį elementą, jis išmeta NullPointerException.

BlockingQueue naudojimas

Blokavimo eilė Java

Blokavimo eilė Java

Blokavimo eilės hierarchija

„Java“ blokavimo eilės hierarchija

„Java“ blokavimo eilės hierarchija

Deklaracija:

public interface BlockingQueue extends Queue>

Čia IR yra kolekcijoje saugomų elementų tipas.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - BlockingQueue sąsaja Java

18. Kas yra maišos kodas()?

Vaizdas, rodantis „Java“ maišos kodą

Vaizdas, rodantis „Java“ maišos kodą

HashCode() metodas grąžina maišos kodo reikšmę kaip sveikąjį skaičių. Jis apibrėžiamas Java Object klasėje, kuri apskaičiuoja nurodytų įvesties objektų maišos reikšmes. Maišos kodo reikšmė dažniausiai naudojama maišos kolekcijose, pvz., HashMap, HashSet, HashTable….. ir kt. Šis metodas turi būti nepaisomas kiekvienoje klasėje, kuri nepaiso vienodo () metodo.

Sintaksė:

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

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Equals() ir hashCode() metodai Java

19. Java kolekcijos sistemoje atskirkite ArrayList ir Vector.

Kolekciniuose interviu šis klausimas dažnai užduodamas; Tačiau „Vector“ yra sinchronizuotas, o „ArrayList“ ne. „ArrayList“ yra greitesnis nei „Vector“. Jei reikia, „ArrayList“ masyvo dydis padidinamas 50%, o „Vector“ talpa padvigubinama, kai reikia.

Masyvo sąrašas vs vektorius java

Masyvo sąrašas vs vektorius java

ArrayList

Vektorius

ArrayList nėra sinchronizuotas Vektorius yra sinchronizuotas.
ArrayList dydis padidinamas iki 50% dabartinio masyvo dydžio, jei elementų skaičius viršija jo talpą. ArrayList dydis padidinamas iki 100% dabartinio masyvo dydžio, jei elementų skaičius viršija jo talpą.
„ArrayList“ yra greitas, nes jis nėra sinchronizuotas. Vektorius yra lėtesnis, nes yra sinchronizuotas.
Iteratoriaus sąsaja naudojama elementams pereiti Iteratoriaus sąsaja arba išvardijimas gali būti naudojamas vektoriui pereiti.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Vector vs ArrayList Java

20. Atskirkite Iterator ir ListIterator.

Iteratorius

ListIterator

Gali važiuoti kolekcijoje esančiais elementais tik į priekį. Gali kirsti kolekcijoje esančius elementus tiek pirmyn, tiek atgal.
Padeda pereiti žemėlapį, sąrašą ir rinkinį. Gali pereiti tik sąrašą, o ne kitus du.
Indeksų negalima gauti naudojant „Iterator“. Jis turi tokius metodus kaip nextIndex() ir previousIndex(), kad bet kuriuo metu einant per sąrašą gautų elementų indeksus.
Negalima keisti ar pakeisti kolekcijoje esančių elementų Elementus galime modifikuoti arba pakeisti naudodami rinkinį (E e)

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp Iteratoriaus ir ListIteratoriaus

21. Kuo skiriasi iteratorius ir išvardijimas?

Iteratorius: Tai universalus iteratorius, kurį galime pritaikyti bet kuriam kolekcijos objektui. Naudodami Iteratorių galime atlikti tiek skaitymo, tiek pašalinimo operacijas.

Sintaksė:

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

Sąrašas: Sąrašas (arba enum) yra vartotojo apibrėžtas duomenų tipas. Jis daugiausia naudojamas pavadinimams priskirti integralinėms konstantoms, pavadinimai leidžia lengvai skaityti ir prižiūrėti programą.

Sintaksė:

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

Iteratorius

Surašymas

Iteratorius yra universalus žymeklis, kuris taikomas visoms kolekcijų klasėms. Sąrašas nėra universalus žymeklis, nes jis taikomas tik senoms klasėms.
Iteratorius turi pašalinimo () metodą. Sąrašas neturi pašalinimo () metodo.
Iteratorius gali atlikti pakeitimus (pvz., naudodamas pašalinimo () metodą, kuris pašalina elementą iš kolekcijos perėjimo metu). Surašymo sąsaja veikia kaip tik skaitoma sąsaja, einant per kolekcijos elementus negalima daryti jokių kolekcijos modifikacijų.
Iteratorius nėra sena sąsaja. Iteratorius gali būti naudojamas HashMap, LinkedList, ArrayList, HashSet, TreeMap ir TreeSet perėjimui. Enumeration yra pasenusi sąsaja, kuri naudojama vektoriui ir maišos lentelėms pereiti.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp „Iteratoriaus“ ir „Enumeration“.

22. Kokios yra Java Hashmap savybės?

„HashMap“ yra panašus į „HashTable“, tačiau yra nesinchronizuotas. Tai leidžia mums saugoti ir nulinius raktus, tačiau turi būti tik vienas nulinio rakto objektas ir gali būti bet koks nulinių reikšmių skaičius. Ši klasė nesuteikia garantijų dėl žemėlapio eiliškumo. Norėdami naudoti šią klasę ir jos metodus, turite importuoti java.util. HashMap paketą arba jo superklasę.

HashMap Java

HashMap Java

Sintaksė:

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

Parametrai: Tam reikalingi du parametrai, būtent taip:

  • Šiame žemėlapyje saugomų raktų tipas (K)
  • Susietų verčių tipas (V)

Norėdami gauti daugiau informacijos, skaitykite straipsnį - HashMap Java su pavyzdžiais

23. Kas yra surinkimo sąsajos?

The Kolekcija sąsaja yra „Java Collections Framework“ narys. Tai yra dalis java.util paketą. Tai viena iš pagrindinių kolekcijos hierarchijos sąsajų. Kolekcijos sąsaja nėra tiesiogiai įdiegta jokioje klasėje. Tačiau jis įgyvendinamas netiesiogiai per jo potipius arba antrines sąsajas, tokias kaip sąrašas, eilė ir rinkinys.

Pavyzdžiui, HashSet klasė įgyvendina Set sąsają, kuri yra kolekcijos sąsajos antrinė sąsaja. Jei rinkinio diegimas neįgyvendina tam tikros operacijos, jis turėtų apibrėžti atitinkamą metodą UnsupportedOperationException.

Kolekcijos hierarchija:

Kolekcijos sąsaja Java

Kolekcijos sąsaja Java

24. Paaiškinkite sąrašo sąsają.

„Java“ klasės sąsaja

„Java“ klasės sąsaja

Java programoje Sąrašo sąsaja leidžia vartotojui saugoti užsakytą objektų kolekciją. Sąrašas yra antrinė Kolekcijos sąsaja. Kolekcijoje sąrašas yra sutvarkytas objektų, kurių reikšmės gali pasikartojančios, rinkinys. Kadangi sąrašas išsaugo įterpimo tvarką, jis leidžia pasiekti ir įterpti vietą, o tai taip pat leidžia pasikartojančias vertes.

Sintaksė:

public interface List extends Collection ;>

Šią sąrašo sąsają įgyvendina įvairios klasės, tokios kaip ArrayList, Vector, Stack ir kt. Kadangi visi poklasiai įgyvendina sąrašą, sąrašo objektą galime sukurti bet kuria iš šių klasių.

Pavyzdys:

Sąrašas al = naujas ArrayList ();
Sąrašas ll = naujas LinkedList ();
Sąrašas v = naujas vektorius ();

Kur T yra objekto tipas

Masyvo sąrašas Java

Masyvo sąrašas Java

Sąrašo sąsają įgyvendinančios klasės yra šios:

  • ArrayList
  • LinkedList
  • Vektorius
  • Stack

25. Parašykite programą, kuri duotą masyvą paverstų rinkiniu asList() metodu.

Norėdami konvertuoti masyvo duomenis į rinkinį, galime naudoti java.util.Arrays klasė. Ši klasė suteikia statinį metodą asList(T… a), kuris paverčia masyvą į kolekciją.

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

>

>

Išvestis

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

26. Atskirkite HashSet ir HashMap

HashSet

HashMap

„HashSet“ įgyvendina „Set“ sąsają HashMap įgyvendina žemėlapio sąsają
Jokių dublikatų neleidžiama Taip reikšmių dublikatai leidžiami, bet rakto dublikatai neleidžiami
„HashSet“ leidžiamos netikros vertės. „HashMap“ neleidžiamos jokios fiktyvios reikšmės.
Atliekant pridėjimo operaciją reikalingas vienas objektas Atliekant pridėjimo operaciją, reikalingi 2 objektai
Greitis yra palyginti lėtesnis nei HashMap Greitis yra palyginti greitesnis nei HashSet, nes čia buvo naudojama maišos technika.
Turėkite vieną nulinę reikšmę Vienas nulinis raktas ir bet koks nulinių reikšmių skaičius
Įterpimui naudojamas metodas Add(). Įterpimui naudojamas put () metodas.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp HashMap ir HashSet

27. Atskirkite HashSet ir HashTable.

HashSet

HashTable

„HashSet“ leidžia naudoti NULL elementus HashTable neleidžia NULL elementų.

Negarantuojama, kad objektai, kuriuos įterpiate į HashSet, bus įterpti ta pačia tvarka. Objektai įterpiami pagal jų maišos kodą. LinkedHashSet gali būti naudojamas tvarkai palaikyti.

HashTable nepalaiko įterpimo tvarkos.
„HashSet“ nėra sinchronizuotas, tačiau jį galima sinchronizuoti išoriškai. HashTable yra sinchronizuota.
add() metodas naudojamas įterpti į HashSet Put() metodas naudojamas įterpti į HashTable

28. Koks yra numatytasis maišos pagrįsto rinkinio apkrovos koeficiento dydis?

Didėjant apkrovos koeficientui, talpa didėja taip, kad HashMap veikimo sudėtingumas išlieka O(1), jei dabartinio elemento ir pradinės talpos santykis peržengia slenkstį. O(1) operatyvinio sudėtingumo reikšmė reiškia, kad paieškos ir įterpimo operacijos trunka pastoviai. Numatytasis apkrovos koeficiento dydis yra 0,75 . Numatytoji talpa apskaičiuojama pradinę talpą padauginus iš apkrovos koeficiento.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Apkrovos koeficientas „HashMap“ programoje „Java“ su pavyzdžiais

„Java“ kolekcijos interviu klausimai patyrusiems

29. Kuo skiriasi „Comparable“ ir „Comparator“ programoje „Java“?

„Java“ suteikia dvi sąsajas objektams rūšiuoti naudojant klasės duomenų narius:

  • Palyginamas
  • Palyginimas

Palyginamas

Palyginimas

Palyginamoji sąsaja suteikia vieną rūšiavimo seką. Komparatoriaus sąsajoje pateikiamos kelios rūšiavimo sekos.
Tikroji klasė modifikuojama panašia sąsaja Tikroji klasė nėra pakeista palyginimo sąsaja.
Elementams rūšiuoti naudojamas palygintiTo() metodas. Elementams rūšiuoti naudojamas palyginti() metodas.
Palyginamasis yra pakete java.lang Palyginimas yra pakete java.util

Norėdami gauti daugiau informacijos, skaitykite straipsnį - „Comparable vs Comparator“ programoje „Java“.

30. Kuo skiriasi greitas ir saugus?

„Java“ iteratoriai naudojami kolekcijos objektams kartoti. Fail-Fast iteratoriai iš karto meta ConcurrentModificationException jei yra a struktūrinis modifikavimas kolekcijos. Struktūrinis modifikavimas reiškia bet kurio elemento pridėjimą arba pašalinimą iš kolekcijos, kol gija kartojasi per tą rinkinį. „Iterator“ „ArrayList“ ir „HashMap“ klasėse yra keli greito „Iterator“ pavyzdžiai.

Fail-Fast Nesaugus
ConcurrentModificationException yra metamas keičiant objektą iteracijos proceso metu. Jokia išimtis nemeta
Fail-Fast proceso metu reikalauja mažiau atminties. Saugus iteratorius proceso metu reikalauja daugiau atminties.
Iteracijos proceso metu klono objektas nesukuriamas. Iteracijos proceso metu sukuriamas klono objektas arba kopija.
Fail-Fast neleidžia modifikuoti iteracijos proceso metu. Fail-Safe leidžia modifikuoti iteracijos proceso metu.
Fail-Fast yra greitas, „Fail-Safe“ veikia šiek tiek lėčiau nei greitai.

Pavyzdžiai:

ArrayList, Vector, HashMap, HashSet ir kt.

Pavyzdžiai:

ConcurrentHashMap, CopyOnWriteArrayList ir kt.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Fail Fast ir Fail Safe Iterators Java

31. Parašykite programą, kuri kartotų sąrašą naudodami lambda išraišką.

Iteracija gali būti atliekama naudojant a lambda išraiška.

Sintaksė:

list_name.forEach(variable->{//block of code})>

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

>

>

Išvestis

Geeks for Geeks>

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Pakartokite per sąrašą Java

32. Kas yra „IdentityHashMap“?

„IdentityHashMap“ įgyvendina žemėlapio sąsają naudodama „Hashtable“, lygindama raktus (ir reikšmes) naudodama nuorodos lygybę, o ne objektų lygybę. Ši klasė įgyvendina žemėlapio sąsają, tačiau tyčia pažeidžia žemėlapio bendrąją sutartį, kuri reikalauja, kad objektai būtų lyginami naudojant lygų () metodą. Ši klasė naudojama, kai vartotojas leidžia palyginti objektus naudodamas nuorodas. Jis priklauso java.util paketui.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - „IdentityHashMap“ klasė „Java“.

33. Parašykite programą „Java“, kad rodytumėte HashTable turinį naudodami išvardinimą.

Hashtable klasė įgyvendina maišos lentelę, kuri susieja raktus su reikšmėmis. Bet koks nenulinis objektas gali būti naudojamas kaip raktas arba kaip reikšmė. Norint sėkmingai saugoti ir gauti objektus iš maišos lentelės, objektai, naudojami kaip raktai, turi įdiegti maišos kodo ir lygybės metodus. Žemiau yra programa, skirta rodyti HashTable turinį naudojant išvardinimą:

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

>

>

Išvestis

Geeks for Geeks>

34. Parašykite programą Java, kad gautumėte HashMap reikšmių rinkinio vaizdą.

„Java“ HashMap klasėje yra java.util.HashMap.values() metodas rinkiniams iš HashMap reikšmių kurti. Iš esmės tai grąžina HashMap reikšmių rinkinio rodinį.

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

>

>

Išvestis

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

Norėdami gauti daugiau informacijos, skaitykite straipsnį - HashMap reikšmės() metodas Java

35. Parašykite programą, skirtą sujungti du ArrayList į vieną ArrayList.

Atsižvelgiant į du „Java“ „ArrayLists“, mūsų užduotis yra prisijungti prie šių „ArrayLists“.

tinklo topologijos

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

>

>

Išvestis

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

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Prisijunkite prie dviejų „ArrayLists“ sąrašų „Java“.

36. Kaip galite sinchronizuoti „ArrayList“ programoje „Java“?

Naudodami Collections.synchronizedList() metodą galime sinchronizuoti savo kolekcijas Java. SynchronizedList() grąžina sinchronizuotą (saugų nuo gijų) sąrašą, paremtą pasirinkimu.

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

>

>

Išvestis

Eat Coffee Code Sleep Repeat>

37. Kas yra „Java“ savybių klasė?

Ypatybių klasė yra Hashtable poklasis. Savybių klasėje saugomas sąrašas reikšmių, kurių raktas yra eilutė, o reikšmė taip pat yra eilutė. Ypatybės gali apibrėžti kitus ypatybių klasių sąrašus, tačiau numatytoji yra savybės.

Savybių klasės ypatybės:

  • Nuosavybė yra Hashtable poklasis.
  • Savybių failas naudojamas reikšmių sąrašo eilutės duomenų tipui saugoti ir gauti, kai raktas yra eilutė, o reikšmė taip pat yra eilutė.
  • Jei pradiniame ypatybių sąraše nėra tam tikros rakto ypatybės, bus ieškoma numatytojo ypatybių sąrašo.
  • Objektai gali būti bendrinami keliomis gijomis be išorinio sinchronizavimo.
  • Savybių klasė gali būti naudojama sistemos savybėms gauti.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - „Java“ savybių klasė

38. Kas atsitiks, jei „HashMap“ naudosite daugiagijoje „Java“ programoje?

Kelių gijų aplinkoje, jei kelios gijos struktūriškai pakeičia žemėlapį, pvz., prideda, pašalina arba modifikuoja atvaizdus, ​​vidinė HashMap duomenų struktūra gali būti sugadinta ir gali trūkti nuorodų, neteisingų įrašų ir pats žemėlapis. tapti visiškai nenaudinga. Taigi neturėtumėte naudoti HashMap tuo pačiu metu veikiančioje programoje; vietoj to naudokite ConcurrentHashMap arba Hashtable, kurie yra saugūs gijose. „ConcurrentHashMap“ apima visus „Hashtable“ metodus, taip pat visišką gavimo ir atnaujinimų sugretinimą.

Kaip ThreadSafeConcurrentHashMap tapo saugus gijų?

  • java.util.Concurrent.ConcurrentHashMap klasė užtikrina gijų saugumą, padalijus žemėlapį į segmentus, o tai leidžia užraktą paimti tik vieną kartą kiekvienam segmentui, t. y. vieną kartą kiekvienai gijai.
  • Skaitymo operacijai „ConcurrentHashMap“ nereikia užrakto.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Kaip „ConcurrentHashMap“ užtikrina gijų saugumą „Java“?

39. Kas atsitiks, jei du skirtingi HashMap raktai grąžins tą patį maišos kodą ()?

Kai du skirtingi HashMap raktai grąžina tą patį maišos kodą, jie atsidurs tame pačiame segmente; todėl įvyks susidūrimai. n susidūrimo atveju, t. y. dviejų ar daugiau mazgų indeksas yra tas pats, mazgai sujungiami nuorodų sąrašu, t. y. antrasis mazgas nurodomas pirmuoju, o trečiasis – antrasis ir pan.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Vidinis „HashMap“ darbas „Java“.

40. Kas yra WeakHashMap?

WeakHashMap įgyvendina žemėlapio sąsają. Skirtingai nuo HashMap, WeakHashMap leidžia rinkti šiukšles, net jei objektas, nurodytas kaip raktas, neturi jokių nuorodų, nepaisant to, kad jis susietas su WeakHashMap. Kitaip tariant, „Grabage Collector“ yra geresnis nei „WeakHashMap“.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Hashmap vs WeakHashMap Java

41. Kas yra UnsupportedOperationException?

API arba sąrašų diegimo kontekste UnsupportedOperationException yra dažna išimtis. Išimtis metama, kai negalima atlikti prašomos operacijos. Ši klasė yra „Java Collections Framework“ narė.

Sintaksė:

public class UnsupportedOperationException extends RuntimeException>

Norėdami gauti daugiau informacijos, skaitykite straipsnį - NepalaikomaOperationException

42. Kaip padaryti, kad kolekcija būtų tik skaitoma Java?

Kuriant tik skaitomą rinkinį reikia apriboti objektą tik gauti duomenis, o ne pridėti ar pašalinti duomenų. Java turi skirtingus metodus skirtingiems rinkinių tipams, pvz., unmodifiableCollection(), unmodifiableMap(), unmodifiableSet() ir tt java.util.Kolekcijos klasė apibrėžia visus metodus. Metodas unmodifiableCollection() sukuria tik skaitymo rinkinį. Tam reikia nuorodos į kolekcijos klasę. Jei turime Set Interface objektą, galime naudoti unmodifiableSet() kad būtų galima tik skaityti.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Kaip padaryti, kad kolekcija būtų tik skaitoma naudojant „Java“?

43. Skirtumas tarp PriorityQueue ir TreeSet Java?

PriorityQueue

Medžių rinkinys

PriorityQueue yra JDK 1.5 versijoje. „TreeSet“ yra JDK 1.4 versijoje.
PriorityQueue naudojama duomenų struktūra yra eilė „TreeSet“ naudojama duomenų struktūra yra „Set“.
Leidžiami pasikartojantys elementai. Pasikartojantys elementai neleidžiami.
Išskyrus šakninį elementą, likę elementai „PriorityQueue“ nėra tam tikra tvarka. TreeSet visi elementai lieka surūšiuota tvarka.
Naudodami PriorityQueue galime gauti didžiausią arba mažiausią elementą per O (1) laiką. TreeSet nesuteikia būdo gauti didžiausią ar mažiausią elementą per O (1) laiką, bet kadangi jie yra surūšiuoti, jis gauna pirmąjį arba paskutinį elementą O (1) laiku.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Skirtumas tarp PriorityQueue ir TreeSet

44. Kas yra deimantų operatorius Java?

Deimantiniai operatoriai naudojami siekiant supaprastinti bendrųjų žodžių naudojimą kuriant objektus, išvengiant nepažymėtų įspėjimų programoje. Kai „Java 7“ buvo įdiegtas operatorius „Diamond“, galime sukurti objektą neminėdami bendro tipo dešinėje išraiškos pusėje, kaip parodyta toliau.

Sintaksė:

List list = new ArrayList();>

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Deimantų operatorius

45. Kaip TreeMap veikia Java?

TreeMap saugo raktų ir reikšmių poras, tačiau „TreeMap“ rūšiuoja raktus didėjančia tvarka, o ne mažėjančia tvarka, kaip „HashMap“. Priklausomai nuo to, kuris konstruktorius naudojamas, „TreeMap“ bus rūšiuojamas pagal raktus arba palyginimo priemonę. „TreeMap“ elementai rūšiuojami pagal raudonai juodą medį. Raudonai juodas medis yra savaime balansuojantis dvejetainis paieškos medis, kuriame kiekvienas mazgas turi papildomą bitą, o šis bitas dažnai interpretuojamas kaip spalva (raudona arba juoda). Šios spalvos naudojamos siekiant užtikrinti, kad medis išliktų subalansuotas įterpiant ir ištrinant.

Mazgo struktūra Java

Mazgo struktūra Java

Norėdami gauti daugiau informacijos, skaitykite straipsnį - „TreeMap“ vidinis darbas Java

46. ​​Išvardykite būdus, kaip kartoti žemėlapį java?

„HashMap“ klasė suteikia „Java“ žemėlapio sąsają, saugodama duomenis poromis (raktas, reikšmė) ir prieidama juos naudojant kito tipo indeksą. Norint naudoti šią klasę, būtina importuoti java.util.HashMap paketą arba jo superklasę.

Yra daug būdų, kaip kartoti HashMap, iš kurių 5 yra išvardyti žemiau:

  1. Iteruokite naudodami HashMap EntrySet naudodami iteratorius.
  2. Pakartokite naudodami „HashMap KeySet“ naudodami „Iterator“.
  3. Pakartokite HashMap naudodami kiekvieną kilpą.
  4. Iteravimas per HashMap naudojant Lambda išraiškas.
  5. Pereikite per HashMap naudodami Stream API.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Kaip kartoti „HashMap“ programoje „Java“.

47. Kas yra CopyOnWriteArrayList Java?

CopyOnWriteArrayList Java

CopyOnWriteArrayList Java

JDK 1.5 pristatė patobulintą ArrayList versiją, pavadintą CopyOnWriteArrayList, kur visi pakeitimai (pridėti, nustatyti, pašalinti ir tt) įgyvendinami nauja kopija. Jį galima rasti java.util.concurrent. Tai duomenų struktūra, sukurta naudoti lygiagrečioje aplinkoje. Thread aplinkoje CopyOnWriteArrayList yra skirtas dažnai skaityti ir retai atnaujinti. CopyOnWriteArrayList yra gijų saugi ArrayList versija.

Norėdami gauti daugiau informacijos, skaitykite straipsnį - CopyOnWriteArrayList Java

48. Kas yra EnumMap Java?

„EnumMap“ yra žemėlapio sąsajos įgyvendinimas, būdingas surašymo tipams. „EnumMap“ klasė yra „Java Collections Framework“ narė ir nėra sinchronizuota. Jis išplečia „AbstractMap“ ir įdiegia „Java“ žemėlapio sąsają. EnumMap priklauso java.util paketui.

Sintaksė:

viešoji klasė EnumMappratęsia AbstractMap įgyvendina Serializable, Cloneable

// K turi išplėsti Enum, o tai įgyvendina reikalavimą, kad raktai turi būti nurodyto enum tipo.

Parametrai:

  • Pagrindinio objekto tipas
  • Vertės objekto tipas
EnumMap Java

EnumMap Java

Norėdami gauti daugiau informacijos, skaitykite straipsnį - EnumMap klasė Java

49. Kaip Hashmap veikia viduje?

HashMap veikia maišos principu. „HashMap“ turi mazgų masyvą, o mazgas gali atstovauti klasę, turinčią šiuos objektus:

  • int maišos
  • K klavišas
  • V vertė
  • Kitas mazgas

Vidinis HashMap veikimas:

  • Maiša
  • Kibirai
  • Indekso apskaičiavimas Hashmap

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Vidinis „HashMap“ darbas „Java“.

penkiasdešimt. Kodėl „hashmap“ iteratorius laikomas greitu?

Spartieji iteratoriai iš karto meta vienu metu taikomų modifikacijų išimtis, jei kuri nors iš išorės bando modifikuoti rinkinį, kuriame jie kartojasi. Greito gedimo funkcija užtikrina, kad iteratorius iš karto sugestų, jei aptiktų, kad bet koks rinkinio modifikavimas ateityje sukels nenormalią elgseną.

Greitai nepavyks funkcija užtikrina, kad jei iteratorius mano, kad rinkinio modifikavimas bet kuriuo momentu ateityje sukeltų neįprastą elgesį, jis iškart suges.

Pavyzdys:

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

>

>

Išvestis:

[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)>

Išvada

Java kolekcijos svarbu suprasti Java kūrėjams ar programuotojams, nes Java plačiai naudojama įvairiose pramonės šakose. Svarbu, kad kūrėjai gerai suprastų pagrindines „Java“ kolekcijų sąvokas. Java yra viena iš plačiausiai naudojamų kalbų geriausiose įmonėse, pvz Uber , Airbnb , Google , Netflix , Instagramas , Spotify, Amazon tt Norėdami patekti į šias įmones ar kitas IT įmones, turite išmokti šiuos dažniausiai užduodamus „Java Collections“ interviu klausimus, kad galėtumėte atlikti „Java“ pagrįstą internetinį vertinimą ir techninį pokalbį.

Jei norite praktikuoti kodavimo klausimus, JAVA rinkimo programos gali būti naudingas šaltinis.

„Java“ kolekcijų interviu klausimai – DUK

1. Kas yra Java interviu klausimų kolekcijos?

Kolekcija Java yra sistema, naudojama objektų kolekcijoms saugoti ir manipuliuoti.

2. Kokios yra 4 „Java“ rinkimo klasės?

„Java“ yra daug kolekcijų, tačiau iš jų dažniausiai naudojamos šios kolekcijos:

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

3. Ar HashMap gali turėti pasikartojančius raktus?

Ne, „HashMap“ negali turėti pasikartojančių raktų. Kadangi „HashMap“ yra viena iš „Java“ kolekcijų, ji saugo vertę rakto vertės pavidalu ir kiekvienas raktas turi savo vertę. Taigi, kadangi joks raktas negali turėti dviejų reikšmių, tai reiškia, kad HashMap negalime turėti pasikartojančių raktų.

4. Kodėl masyvas nėra kolekcija?

Masyvas nėra kolekcija, viskas dėl to, kad skiriasi kolekcijų ir masyvų funkcijos, iš kurių keletas paminėtų toliau:

  • Deklaravus masyvo dydį negalima pakeisti
  • Masyvai gali turėti tik vienarūšių duomenų tipų elementus.
  • Masyve gali būti ir primityvūs duomenų tipai, ir objektai, o kolekcijose gali būti tik apvyniojantys objektai.