Java kolekciju intervijas jautājumi un atbildes
Java kolekcijas ietvars gadā tika ieviests JDK 1.2 kurā ir visas kolekcijas klases un saskarnes. Java kolekcija ir ietvars, kas nodrošina mehānismu objektu kolekcijas glabāšanai un manipulēšanai ar tiem. Tas ļauj izstrādātājiem piekļūt iepriekš iepakotām datu struktūrām un algoritmiem, lai apstrādātu datus.
Šajā rakstā mēs esam apskatījuši 50 labākos Java kolekciju intervijas jautājumi un atbildes kas aptver visu, sākot no pamata līdz uzlabotām Java kolekcijas koncepcijām, piemēram, navigācijas kolekcija, WeakHashMap, straumes Lambdas utt. Neatkarīgi no tā, vai esat svaigāks vai an pieredzējis Java izstrādātājs , šie Java kolekciju intervijas jautājumi sniedz jums visu nepieciešamo pārliecību, lai izpildītu nākamo Java interviju.
Java kolekciju intervijas jautājumi
Mēs esam sadalījuši 50 jautājumus divās daļās: Pieredzējušie un Pirmie. Sāksim ar jautājumiem Freshers.
Satura rādītājs
- Java kolekcijas intervijas jautājumi pirmkursniekiem
- Java kolekcijas intervijas jautājumi pieredzējušiem
Java kolekcijas intervijas jautājumi pirmkursniekiem
1. Kas ir kolekcija Java?
Termiņš kolekcija attiecas uz objektu grupu, kas attēlota kā viena vienība. Klases Java kolekcijas klašu hierarhijā ir sadalītas divās daļās sakne saskarnes: Kolekcija (java.util.Collection) un Karte (java.util.Map) . Noteikumi, ar kuriem jūs saskarsities, mācoties par kolekciju Java:
- Kolekcijas ietvars: Java kolekcijas ietvars definē klases un saskarnes, lai attēlotu objektu grupas kā vienu entītiju. C++ izstrādātāji var salīdzināt kolekcijas sistēmu ar STL (standarta veidņu bibliotēka) un Container Framework ar kolekcijas ietvaru, ja tie nāk no C++ fona.
- Kolekcijas interfeiss: Klases saskarne norāda, kas tai jādara, nevis kā. Citiem vārdiem sakot, tas ir klases plāns. Šis interfeiss nodrošina visizplatītākās metodes visiem kolekcijas objektiem, kas ir daļa no kolekcijas ietvara. Alternatīvi, tas attēlo atsevišķu objektu kopumā.
- Kolekcijas klase: Collection Framework dalībnieks, tas ir daļa no java.util pakotnes. Kolekcijas objekts šajā klasē ir nodrošināts ar daudzām lietderības metodēm.
2. Kas ir ietvars Java?
Ietvari ir kopas klases un saskarnes kas nodrošina gatavu arhitektūru. Nav nepieciešams definēt ietvaru, lai ieviestu jaunas funkcijas vai klases. Rezultātā optimāls objektorientēts dizains ietver ietvaru, kas satur klašu kolekciju, kuras visas veic līdzīgus uzdevumus. Ietvaru var izmantot dažādos veidos, piemēram, izsaucot tās metodes, paplašinot to un nodrošinot atzvanīšanu, klausītājus un citas implementācijas. Daži no populārākajiem java ietvariem ir:
- Pavasaris
- Pārziemot
- Statņi
- Google tīmekļa rīkkopa (GWT)
- JavaServer Faces (JSF)
3. Kāda ir atšķirība starp masīvu un kolekciju Java?
Masīvi ir līdzīga tipa mainīgo kolekcija ar parastu nosaukumu Java. Ir dažas atšķirības starp masīviem Java un C/C++. No otras puses, kolekcijas ir atsevišķu objektu grupas, kas veido vienu vienību, kas pazīstama kā objektu kolekcija.
| Masīvi | Kolekcija |
|---|---|
| Masīvu izmērs ir fiksēts, tas nozīmē, ka, izveidojot masīvu, mēs nevaram palielināt vai samazināt, pamatojoties uz mūsu prasībām. | Kolekcija ir audzējama dabā un ir balstīta uz mūsu prasībām. Mēs varam palielināt vai samazināt izmēru. |
| Attiecībā uz atmiņu masīvus nav ieteicams lietot. | Attiecībā uz atmiņu kolekcijas ir ieteicamas lietošanai. |
| Attiecībā uz veiktspēju ieteicams izmantot masīvus. | Attiecībā uz veiktspēju kolekcijas nav ieteicamas lietošanai. |
| Masīvi var saturēt tikai viendabīgus datu tipu elementus. | Kolekcijā var būt gan viendabīgi, gan neviendabīgi elementi. |
Plašāku informāciju skatiet rakstā - Atšķirība starp masīviem un kolekcijām Java
4. Kādas ir Java Collections Framework dažādās saskarnes?
Kolekcija ir pazīstama kā kolekcijas hierarhijas sakne. Kolekcijas attēlo objektu grupas, kas pazīstamas kā elementi. Java platforma nenodrošina tiešu šīs saskarnes ieviešanu, bet kolekcijas interfeiss tiek ieviests klasēs List un Set.
- Kolekcijas saskarne
- Saraksta interfeiss
- Iestatīt saskarni
- Rindas interfeiss
- Atcelšanas interfeiss
- Kartes interfeiss
5. Izskaidrojiet Java kolekcijas ietvara hierarhiju.
Visas kolekcijas sistēmas nepieciešamās klases un saskarnes ir ietvertas utilīta pakotnē (java. util). Kolekciju ietvariem ir interfeiss, ko sauc par iterējamo saskarni, kas ļauj iteratoram atkārtot visas kolekcijas. Papildus šai saskarnei galvenā kolekcijas saskarne darbojas kā kolekcijas sistēmas sakne. Visas kolekcijas paplašina šo kolekcijas saskarni, tādējādi paplašinot iteratora īpašības un šīs saskarnes metodes. Nākamajā attēlā ir parādīta kolekcijas struktūras hierarhija.
Java kolekcijas hierarhija
6. Kādas ir kolekcijas Framework priekšrocības?
Kolekcijas ietvara priekšrocības: Tā kā savākšanas sistēmas trūkums radīja iepriekš minēto trūkumu kopumu, tālāk ir norādītas savākšanas sistēmas priekšrocības.
- Konsekventa API: API ir pamata saskarņu komplekts, piemēram Kolekcija , Iestatīt , Saraksts , vai Karte , ir visas klases (ArrayList, LinkedList, Vector utt.), kas ievieš šīs saskarnes daži kopīgs metožu kopums.
- Samazina programmēšanas piepūli: Programmētājam nav jāuztraucas par kolekcijas dizainu, bet viņš var koncentrēties uz tās labāko izmantošanu savā programmā. Līdz ar to ir veiksmīgi realizēta Objektorientētās programmēšanas (t.i.) abstrakcijas pamatkoncepcija.
- Palielina programmas ātrumu un kvalitāti: Palielina veiktspēju, nodrošinot augstas veiktspējas noderīgu datu struktūru un algoritmu ieviešanu, jo šajā gadījumā programmētājam nav jādomā par labāko konkrētas datu struktūras ieviešanu. Viņš var vienkārši izmantot labāko ieviešanu, lai krasi palielinātu sava algoritma/programmas veiktspēju.
7. Kas ir ArrayList Java?
ArrayList ir daļa no Java kolekcijas sistēmas, un tā ir java.util pakotnes klase. Tas nodrošina mums dinamiskus masīvus Java. Galvenās ArrayList priekšrocības ir tādas, ka, ja mēs deklarējam masīvu, ir jānorāda izmērs, bet ArrayList nav nepieciešams minēt ArrayList lielumu, ja vēlaties minēt izmēru, tad varat to izdarīt.
Array List attēls
Plašāku informāciju skatiet rakstā - ArrayList Java
8. Kāda ir atšķirība starp kolekciju un kolekcijām?
| Kolekcija | Kolekcijas |
|---|---|
| Tā ir saskarne. | Tā ir komunālo pakalpojumu klase. |
| To izmanto, lai attēlotu atsevišķu objektu grupu kā vienu vienību. | Tas nosaka vairākas utilīta metodes, kas tiek izmantotas, lai darbotos ar iekasēšanu. |
| Kolekcija ir saskarne, kas satur statisku metodi kopš java8. Interfeiss var ietvert arī abstraktas un noklusējuma metodes. | Tas satur tikai statiskas metodes. |
Plašāku informāciju skatiet rakstā - Kolekcija pret kolekcijām Java ar piemēru
9. Atšķirība starp ArrayList un LinkedList Java kolekcijas sistēmā?
ArrayList un LinkedList
| ArrayList | LinkedList |
|---|---|
| Šī klase izmanto dinamisku masīvu, lai saglabātu tajā esošos elementus. Ieviešot vispārīgos līdzekļus, šī klase atbalsta visu veidu objektu uzglabāšanu. | Šī klase izmanto divkārši saistītu sarakstu, lai saglabātu tajā esošos elementus. Līdzīgi kā ArrayList, šī klase atbalsta arī visu veidu objektu uzglabāšanu. |
| Manipulēšana ArrayList aizņem vairāk laika iekšējās ieviešanas dēļ. Ikreiz, kad mēs noņemam elementu, iekšēji masīvs tiek šķērsots un atmiņas biti tiek pārvietoti. | Manipulēšana ar LinkedList aizņem mazāk laika, salīdzinot ar ArrayList, jo divkārši saistītā sarakstā nav atmiņas bitu pārvietošanas koncepcijas. Saraksts tiek šķērsots un tiek mainīta atsauces saite. |
| Šī klase ievieš saraksta saskarni. Tāpēc tas darbojas kā saraksts. | Šī klase ievieš gan saskarni List, gan deque interfeisu. Tāpēc tas var darboties kā saraksts un deque. |
| Šī klase darbojas labāk, ja lietojumprogramma pieprasa saglabāt datus un piekļūt tiem. | Šī klase darbojas labāk, ja lietojumprogramma pieprasa manipulēt ar saglabātajiem datiem. |
Plašāku informāciju skatiet rakstā - ArrayList vs LinkedList Java
10. Kas ir iterators?
Java kolekcijas ietvars izmanto iteratorus, lai pa vienam izgūtu elementus. Šis iterators ir universāls, jo to var izmantot ar jebkura veida kolekcijas objektiem. Izmantojot Iteratoru, mēs varam veikt gan lasīšanas, gan noņemšanas darbības. Šī ir uzlabota Enumeration versija, kurai ir pievienoti noņemšanas elementi.
Uzskaitot elementus visās Collection ietvarā ieviestās saskarnes, piemēram, Iestatīt , Saraksts , Rinda , Par ko , un visām ieviestajām Map klasēm, ir jāizmanto iterators. Vienīgais kursors, kas pieejams visai kolekcijas sistēmai, ir iterators. Izmantojot iterator() metodi kolekcijas saskarnē, varat izveidot iteratora objektu.
Sintakse:
Iterator itr = c. iterator ();
Piezīme: Šeit c ir jebkurš kolekcijas objekts. itr ir Iterator interfeisa tipa un attiecas uz c.
Plašāku informāciju skatiet rakstā - Iteratori Java valodā
11. Kāda ir atšķirība starp iteratoru un uzskaitījumu?
Galvenā atšķirība starp iteratoru un uzskaitīšanu ir tā, ka iteratoriem ir noņemšanas () metode, bet uzskaitījumiem nav. Tādējādi, izmantojot Iteratoru, mēs varam manipulēt ar objektiem, pievienojot un noņemot tos no kolekcijām. Tā kā uzskaitīšana var tikai šķērsot objektus un tos ienest, tā darbojas kā tikai lasāms interfeiss.
Plašāku informāciju skatiet rakstā - Atšķirība starp iteratoru un uzskaitījumu
12. Kāda ir atšķirība starp sarakstu un komplektu Java?
Galvenā atšķirība starp sarakstu un kopu ir tā, ka sarakstā var būt dublēti elementi, savukārt komplektā ir tikai unikāli elementi. Saraksts ir sakārtots, un tajā tiek uzturēta tā objekta secība, kuram tie ir pievienoti. Komplekts nav pasūtīts.
| Saraksts | Iestatīt |
|---|---|
| Saraksts ir indeksēta secība. | Kopa ir neindeksēta secība. |
| Sarakstā ir atļauti elementu dublikāti | Komplektā nav atļauts dublēt elementus. |
| Var piekļūt elementiem pēc to atrašanās vietas. | Pozīcijas piekļuve elementiem nav atļauta. |
| Var saglabāt vairākus nulles elementus. | Null elementus var saglabāt tikai vienu reizi. |
| Sarakstu ieviešanas ir ArrayList, LinkedList, Vector, Stack | Kopu ieviešanas ir HashSet, LinkedHashSet. |
Plašāku informāciju skatiet rakstā - Atšķirība starp sarakstu un komplektu Java
13. Kāda ir Java Collections Framework labākā prakse?
Tālāk ir norādītas dažas no Java kolekciju izmantošanas paraugprakses.
- Programmas jāraksta kā saskarnes, nevis implementācijas, lai mēs vēlāk varētu modificēt ieviešanu.
- Kad vien iespējams, izmantojiet Generics, lai nodrošinātu tipa drošību un izvairītos no ClassCastExceptions.
- Atbilstoša kolekcijas veida izvēle, pamatojoties uz nepieciešamību. Piemēram, ja izmērs ir fiksēts, mēs varētu vēlēties izmantot masīvu, nevis masīvu sarakstu. Atkārtojot karti, mums vajadzētu izmantot LinkedHashMap. Komplekts ir labākais veids, kā izvairīties no dublikātiem.
- Izmantojiet JDK nodrošinātās nemainīgās klases kā atslēgas programmā Map, lai izvairītos no hashCode() un equals() ieviešanas.
- Lai palielinātu koda lasāmību, mums vajadzētu izmantot isEmpty(), nevis atrast kolekcijas lielumu un salīdzināt to ar nulli.
- Tā vietā, lai rakstītu savu ieviešanu, izmantojiet utilīta klasi Kolekcijas, lai iegūtu tikai lasāmas, sinhronizētas vai tukšas kolekcijas. Tas uzlabo koda atkārtotu izmantošanu, vienlaikus nodrošinot lielāku stabilitāti.
14. Kas ir prioritārā rinda Java?
PriorityQueues izmanto, lai apstrādātu objektus atbilstoši to prioritātei. Rindas darbojas pēc algoritma First-In-First-Out, taču dažreiz rindas elementi ir jāapstrādā atbilstoši to prioritātei, un šajā gadījumā tiek izmantota funkcija PriorityQueue. Prioritātes rindas ir balstītas uz prioritāšu kaudzēm.
Prioritārās rindas elementi tiek sakārtoti pēc dabiskās secības vai rindas veidošanas laikā nodrošinātā Comparator atkarībā no tā, kurš konstruktors tiek izmantots.
Prioritātes rindas Java
Deklarācija:
public class PriorityQueue extends AbstractQueue implements Serializable where E is the type of elements held in this queue
Klase ievieš Serializable, Iterable, Collection un Queue saskarnes.
15. Kāda ir atšķirība starp sarakstu, kopu un karti java?
| Saraksts | Iestatīt | Karte |
|---|---|---|
| Saraksta interfeiss ļauj dublēt elementus | Komplektā nav atļauts dublēt elementus. | Karte neatļauj dublēt elementus |
| Sarakstā tiek saglabāta ievietošanas secība. | Komplektā netiek uzturēta ievietošanas secība. | Karte arī neuztur nekādu ievietošanas kārtību. |
| Mēs varam pievienot jebkuru nulles vērtību skaitu. | Bet komplektā gandrīz tikai viena nulles vērtība. | Karte pieļauj ne vairāk kā vienu nulles atslēgu un jebkuru nulles vērtību skaitu. |
| Saraksta ieviešanas klases ir Array List un LinkedList. | Kopu ieviešanas klases ir HashSet, LinkedHashSet un TreeSet. | Kartes ieviešanas klases ir HashMap, HashTable, TreeMap, ConcurrentHashMap un LinkedHashMap. |
Plašāku informāciju skatiet rakstā - Atšķirība starp sarakstu, iestatīšanu un karti Java
16. Kāda ir atšķirība starp Queue un Stack?
| Kaudze | Rinda |
|---|---|
| Stacks darbojas pēc LIFO principa, kas nozīmē, ka elements, kas ievietots pēdējā, būs pirmais elements, kas tiks izņemts. | Rindas darbojas pēc FIFO principa, kas nozīmē, ka pirmais ievietotais elements būs pirmais elements, kas tiks izņemts. |
| Kaudzēs ievietošana un dzēšana notiek tikai no augšas. | Rindās ievietošana notiek saraksta aizmugurē, bet dzēšana notiek saraksta priekšpusē. |
| Ievietošanas darbību sauc par push darbību. | Ievietošanas darbību sauc par rindas darbību. |
| Dzēšanas darbību sauc par pop operāciju. | Dzēšanas darbību sauc par izslēgšanas darbību. |
| Kaudzītes augšdaļa vienmēr norāda uz pēdējo saraksta elementu, kas ir vienīgais rādītājs, ko izmanto, lai piekļūtu sarakstam. | Lai piekļūtu rindām, tiek saglabāti divi rādītāji. Priekšējais rādītājs norāda uz pirmo ievietoto elementu, bet aizmugurējais rādītājs norāda uz pēdējo ievietoto elementu. |
17. Kas ir BlockingQueue Java?
Java BlockingQueue saskarne ir pievienota Java 1.5 kopā ar dažādām citām vienlaicīgām utilītu klasēm, piemēram, ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList u.c. BlockingQueue saskarne atbalsta plūsmas kontroli (papildus rindai), ieviešot bloķēšanu, ja BlockingQueu ir pilna vai tukša.
Pavediens, kas mēģina ievietot rindā elementu pilnā rindā, tiek bloķēts, līdz kāds cits pavediens atdala vietu rindā, noņemot vienu vai vairākus elementus no rindas vai pilnībā notīrot rindu. Tāpat tas bloķē pavedienu, kas mēģina dzēst no tukšas rindas, līdz daži citi pavedieni ievieto vienumu. BlockingQueue nepieņem nulles vērtību. Ja mēs mēģinām ievietot rindā nulles vienumu, tas izmet NullPointerException.
BlockingQueue izmantošana
Bloķēšanas rinda Java
Bloķēšanas rindas hierarhija
Bloķēšanas rindas hierarhija Java
Deklarācija:
public interface BlockingQueue extends Queue
Šeit, UN ir kolekcijā saglabāto elementu veids.
Plašāku informāciju skatiet rakstā - BlockingQueue interfeiss Java
18. Kas ir hashCode()?
Attēls, lai demonstrētu Java hash kodu
Metode hashCode() atgriež hashcode vērtību kā veselu skaitli. Tas ir definēts Java Object klasē, kas aprēķina doto ievades objektu jaucējvērtības. Hashkoda vērtība galvenokārt tiek izmantota uz jaukšanu balstītās kolekcijās, piemēram, HashMap, HashSet, HashTable utt. Šī metode ir jāignorē katrā klasē, kas ignorē vienāds() metodi.
Sintakse :
public int hashCode() // This method returns the hash code value // for the object on which this method is invoked.
Plašāku informāciju skatiet rakstā - equals() un hashCode() metodes Java
19. Java kolekcijas ietvarā atšķiriet ArrayList un Vector.
Krājumu intervijās šis jautājums tiek bieži uzdots; Tomēr Vector ir sinhronizēts, bet ArrayList nav. ArrayList ir ātrāks nekā Vector. Ja nepieciešams, ArrayList masīva lielums tiek palielināts par 50%, savukārt Vector kapacitāte tiek dubultota, kad vien tas ir nepieciešams.
Masīvu saraksts pret vektoru java
| ArrayList | Vektors |
|---|---|
| ArrayList nav sinhronizēts | Vektors ir sinhronizēts. |
| ArrayList lielums tiek palielināts līdz 50% no pašreizējā masīva lieluma, ja elementu skaits pārsniedz tā ietilpību. | ArrayList lielums tiek palielināts līdz 100% no pašreizējā masīva lieluma, ja elementu skaits pārsniedz tā ietilpību. |
| ArrayList ir ātrs, jo tas nav sinhronizēts. | Vektors ir lēnāks, jo tas ir sinhronizēts. |
| Iteratora saskarne tiek izmantota elementu šķērsošanai | Lai šķērsotu vektoru, var izmantot iteratora saskarni vai uzskaitījumu. |
Plašāku informāciju skatiet rakstā - Vector vs ArrayList Java
20. Atšķiriet Iterator un ListIterator.
| Iterators | ListIterator |
|---|---|
| Var šķērsot kolekcijā esošos elementus tikai virzienā uz priekšu. | Var šķērsot kolekcijā esošos elementus gan uz priekšu, gan atpakaļ. |
| Palīdz šķērsot karti, sarakstu un komplektu. | Var šķērsot tikai sarakstu, nevis pārējos divus. |
| Indeksus nevar iegūt, izmantojot Iteratoru. | Tam ir tādas metodes kā nextIndex() un previousIndex(), lai jebkurā laikā, šķērsojot sarakstu, iegūtu elementu indeksus. |
| Nevar mainīt vai aizstāt kolekcijā esošos elementus | Mēs varam modificēt vai aizstāt elementus, izmantojot komplektu (E e) |
Plašāku informāciju skatiet rakstā - Atšķirība starp Iteratoru un ListIteratoru
21. Kāda ir atšķirība starp iteratoru un uzskaitījumu?
Iterators: Tas ir universāls iterators, jo mēs to varam lietot jebkuram kolekcijas objektam. Izmantojot iteratoru, mēs varam veikt gan lasīšanas, gan noņemšanas darbības.
Sintakse:
// Here 'c' is any Collection object. itr is of // type Iterator interface and refers to 'c' Iterator itr = c.iterator();
Uzskaitījums: Uzskaitījums (vai enum) ir lietotāja definēts datu tips. To galvenokārt izmanto, lai piešķirtu nosaukumus integrālajām konstantēm, nosaukumi padara programmu viegli lasāmu un uzturējamu.
Sintakse:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; } | Iterators | Uzskaitījums |
|---|---|
| Iterators ir universāls kursors, jo tas ir piemērojams visām kolekcijas klasēm. | Uzskaitīšana nav universāls kursors, jo tas attiecas tikai uz mantotajām klasēm. |
| Iteratoram ir noņemšanas () metode. | Uzskaitīšanai nav noņemšanas() metodes. |
| Iterators var veikt izmaiņas (piemēram, izmantojot metodi remove(), kas pārvietošanas laikā noņem elementu no kolekcijas). | Uzskaitīšanas interfeiss darbojas kā tikai lasāms interfeiss, kolekcijā nevar veikt nekādas modifikācijas, šķērsojot kolekcijas elementus. |
| Iterators nav mantota saskarne. Iteratoru var izmantot HashMap, LinkedList, ArrayList, HashSet, TreeMap un TreeSet šķērsošanai. | Uzskaitīšana ir mantota saskarne, kas tiek izmantota, lai šķērsotu Vector un Hashtable. |
Plašāku informāciju skatiet rakstā - Atšķirība starp iteratoru un uzskaitījumu
22. Kādas ir Java Hashmap iespējas?
HashMap ir līdzīgs HashTable, taču tas nav sinhronizēts. Tas ļauj mums saglabāt arī nulles atslēgas, taču jābūt tikai vienam nulles atslēgas objektam un var būt neierobežots skaits nulles vērtību. Šī klase negarantē kartes secību. Lai izmantotu šo klasi un tās metodes, jums ir jāimportē java.util. HashMap paka vai tās superklase.
HashMap Java valodā
Sintakse:
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Parametri: Tam nepieciešami divi parametri, proti, šādi:
- Šīs kartes uzturēto atslēgu veids (K)
- Kartēto vērtību veids (V)
Plašāku informāciju skatiet rakstā - HashMap Java ar piemēriem
23. Kas ir kolekcijas saskarnes?
The Kolekcija interfeiss ir Java Collections Framework dalībnieks. Tā ir daļa no java.util iepakojums. Tā ir viena no kolekcijas hierarhijas saknes saskarnēm. Kolekcijas saskarni tieši neievieš neviena klase. Tomēr tas tiek ieviests netieši, izmantojot tā apakštipus vai apakšsaskarnes, piemēram, sarakstu, rinda un kopa.
Piemēram, HashSet klase īsteno saskarni Set, kas ir kolekcijas interfeisa apakšinterfeiss. Ja kolekcijas implementācija neīsteno noteiktu darbību, tai ir jādefinē atbilstošā metode UnsupportedOperationException izmešanai.
Kolekcijas hierarhija:
Kolekcijas interfeiss Java
24. Izskaidrojiet saraksta saskarni.
Klases interfeiss Java valodā
Java programmā List interfeiss ļauj lietotājam saglabāt sakārtotu objektu kolekciju. Saraksts ir kolekcijas bērnu interfeiss. Kolekcijā saraksts ir sakārtota objektu kolekcija, kurai var būt vērtību dublikāti. Tā kā saraksts saglabā ievietošanas secību, tas nodrošina pozicionālu piekļuvi un ievietošanu, kas ļauj arī dublēt vērtības.
Sintakse:
public interface List extends Collection ;
Šo saraksta saskarni ievieš dažādas klases, piemēram, ArrayList, Vector, Stack utt. Tā kā visas apakšklases īsteno sarakstu, mēs varam izveidot saraksta objektu ar jebkuru no šīm klasēm.
Piemērs:
List al = jauns ArrayList ();
Saraksts ll = jauns LinkedList ();
Saraksts v = jauns vektors ();Kur T ir objekta tips
Masīvu saraksts Java
Klases, kas ievieš saskarni List, ir šādas:
- ArrayList
- LinkedList
- Vektors
- Kaudze
25. Uzrakstiet programmu, lai ar asList() metodi pārvērstu doto masīvu kolekcijā.
Lai pārveidotu uz masīvu balstītus datus par kolekciju, mēs varam izmantot java.util.Arrays klasē. Šī klase nodrošina statisku metodi asList(T… a), kas pārvērš masīvu 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);> > }> }> |
Izvade
Array input: [Kamlesh, Abhay, Abhishek, Shivansh] Converted elements: [Kamlesh, Abhay, Abhishek, Shivansh]
26. Atšķiriet HashSet un HashMap
| HashSet | HashMap |
|---|---|
| HashSet ievieš Set saskarni | HashMap ievieš kartes saskarni |
| Dublikāti nav atļauti | Jā, vērtību dublikāti ir atļauti, bet nav atļauts dublēt atslēgas |
| HashSet ir atļautas fiktīvas vērtības. | HashMap nav atļautas fiktīvas vērtības. |
| Pievienošanas darbības laikā ir nepieciešams viens objekts | Pievienošanas darbības laikā ir nepieciešami 2 objekti |
| Ātrums ir salīdzinoši lēnāks nekā HashMap | Ātrums ir salīdzinoši ātrāks nekā HashSet, jo šeit ir izmantota jaukšanas tehnika. |
| Ir viena nulles vērtība | Viena nulles atslēga un jebkurš nulles vērtību skaits |
| Ievietošanai tiek izmantota metode Add(). | Ievietošanai tiek izmantota put () metode. |
Plašāku informāciju skatiet rakstā - Atšķirība starp HashMap un HashSet
27. Atšķiriet HashSet un HashTable.
| HashSet | HashTable |
|---|---|
| HashSet pieļauj NULL elementus | HashTable neļauj izmantot NULL elementus. |
| Objekti, kurus ievietojat HashSet, netiek garantēti, ka tiks ievietoti tādā pašā secībā. Objekti tiek ievietoti, pamatojoties uz to jaucējkodu. LinkedHashSet var izmantot, lai uzturētu kārtību. | HashTable neuztur ievietošanas secību. |
| HashSet nav sinhronizēts, bet to var sinhronizēt ārēji. | HashTable ir sinhronizēta. |
| Add() metode tiek izmantota, lai ievietotu HashSet | Put() metode tiek izmantota ievietošanai HashTable |
28. Kāds ir noklusējuma slodzes koeficienta lielums jaukšanas kolekcijā?
Palielinoties slodzes koeficientam, jauda palielinās tā, ka HashMap darbības sarežģītība paliek O(1), ja pašreizējā elementa attiecība pret sākotnējo jaudu pārsniedz slieksni. O(1) darbības sarežģītības nozīme nozīmē, ka izguves un ievietošanas operācijām ir nepieciešams nemainīgs laiks. Noklusējuma slodzes koeficienta lielums ir 0,75 . Noklusējuma jauda tiek aprēķināta, sākotnējo jaudu reizinot ar slodzes koeficientu.
Plašāku informāciju skatiet rakstā - Slodzes koeficients HashMap programmā Java ar piemēriem
Java kolekcijas intervijas jautājumi pieredzējušiem
29. Kāda ir atšķirība starp Comparable un Comparator Java?
Java nodrošina divas saskarnes objektu šķirošanai, izmantojot klases datu dalībniekus:
- Salīdzināms
- Salīdzinātājs
| Salīdzināms | Salīdzinātājs |
|---|---|
| Salīdzināmā saskarne nodrošina vienu šķirošanas secību. | Salīdzinājuma saskarne nodrošina vairākas šķirošanas secības. |
| Faktisko klasi modificē salīdzināms interfeiss | Salīdzinājuma saskarne nemaina faktisko klasi. |
| Elementu kārtošanai izmanto metodi salīdzinātTo(). | Elementu kārtošanai tiek izmantota salīdzināšanas () metode. |
| Salīdzināms ir pieejams pakotnē java.lang | Salīdzinātājs ir pieejams pakotnē java.util |
Plašāku informāciju skatiet rakstā - Salīdzināms vs salīdzinājums Java
30. Kāda ir atšķirība starp bezatteices un bezatteices?
Java iteratori tiek izmantoti kolekcijas objektu atkārtošanai. Fail-Fast iteratori uzreiz met ConcurrentModificationException ja ir a strukturāla modifikācija no kolekcijas. Strukturālās modifikācijas nozīmē jebkura elementa pievienošanu vai noņemšanu no kolekcijas, kamēr pavediens atkārtojas šajā kolekcijā. Iterators klasēs ArrayList un HashMap ir daži ātrā Iterator piemēri.
| Fail-Fast | Bezatteices |
|---|---|
| ConcurrentModificationException tiek izmests, modificējot objektu iterācijas procesa laikā. | Izņēmums netiek izmests |
| Fail-Fast procesa laikā ir nepieciešams mazāk atmiņas. | Fail-Safe iterator procesa laikā prasa vairāk atmiņas. |
| Klona objekts netiek izveidots iterācijas procesa laikā. | Iterācijas procesa laikā tiek izveidots klona objekts vai kopija. |
| Fail-Fast neļauj veikt izmaiņas iterācijas procesa laikā. | Fail-Safe ļauj veikt izmaiņas iterācijas procesa laikā. |
| Fail-Fast ir ātrs, | Fail-Safe ir nedaudz lēnāks nekā ātrs. |
| Piemēri: ArrayList, Vector, HashMap, HashSet utt. | Piemēri: ConcurrentHashMap, CopyOnWriteArrayList utt. |
Plašāku informāciju skatiet rakstā - Fail Fast un Fail Safe iterators Java
31. Uzrakstiet programmu saraksta atkārtošanai, izmantojot lambda izteiksmi.
Iterāciju var veikt, izmantojot a lambda izteiksme.
Sintakse:
list_name.forEach(variable->{//koda bloks}) 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); });>> |