logo

34 Kolekcie Java Otázky k rozhovoru

V Jave sa otázky zberných rozhovorov najčastejšie pýtajú anketári. Tu je zoznam najčastejšie kladených otázok týkajúcich sa rozhovorov s kolekciami s odpoveďami.


1) Čo je to Collection framework v Jave?

Collection Framework je kombináciou tried a rozhrania, ktoré sa používa na ukladanie a manipuláciu s údajmi vo forme objektov. Na tento účel poskytuje rôzne triedy ako ArrayList, Vector, Stack a HashSet atď. a rozhrania ako List, Queue, Set atď.


2) Aké sú hlavné rozdiely medzi poľom a kolekciou?

Pole a kolekcia sú si trochu podobné, pokiaľ ide o ukladanie referencií objektov a manipuláciu s údajmi, ale v mnohých smeroch sa líšia. Hlavné rozdiely medzi poľom a kolekciou sú definované nižšie:

  • Polia majú vždy pevnú veľkosť, t.j. používateľ nemôže zväčšovať alebo zmenšovať dĺžku poľa podľa svojich požiadaviek alebo za behu, ale v kolekcii sa veľkosť môže meniť dynamicky podľa potreby.
  • Polia môžu ukladať iba homogénne objekty alebo objekty podobného typu, ale v kolekcii môžu byť uložené heterogénne objekty.
  • Polia nemôže poskytnúť ?hotové? metódy pre požiadavky používateľov ako triedenie, vyhľadávanie atď., ale kolekcia obsahuje hotové metódy na použitie.

3) Vysvetlite rôzne rozhrania používané v rámci kolekcie?

Collection framework implementuje rôzne rozhrania, Collection interface a Map interface (java.util.Map) sú hlavne používané rozhrania Java Collection Framework. Zoznam rozhraní Collection Framework je uvedený nižšie:

1. Rozhranie zberu: Kolekcia (java.util.Collection) je primárne rozhranie a každá kolekcia musí implementovať toto rozhranie.

Syntax:

 public interface Collectionextends Iterable 

Kde znamená, že toto rozhranie je všeobecného typu

2. Rozhranie zoznamu: Rozhranie List rozširuje rozhranie kolekcie a je to usporiadaná kolekcia objektov. Obsahuje duplicitné prvky. Umožňuje tiež náhodný prístup k prvkom.

Syntax:

 public interface List extends Collection 

3. Nastavenie rozhrania: Rozhranie Set (java.util.Set) je kolekcia, ktorá nemôže obsahovať duplicitné prvky. Môže obsahovať iba zdedené metódy rozhrania kolekcie

Syntax:

 public interface Set extends Collection 

Rozhranie fronty: Rozhranie Queue (java.util.Queue) definuje dátovú štruktúru frontu, ktorá ukladá prvky vo forme FIFO (first in first out).

Syntax:

 public interface Queue extends Collection 

4. Rozhranie dequeue: je to dvojitý rad. Umožňuje vkladanie a vyberanie prvkov z oboch koncov. Implantuje vlastnosti zásobníka aj frontu, takže môže vykonávať operácie zásobníka LIFO (Last in first out) a FIFO (first in first out).

Syntax:

 public interface Dequeue extends Queue 

5. Rozhranie mapy: Mapa (java.util.Map) predstavuje kľúč a párové úložisko hodnôt prvkov. Rozhranie mapy neimplementuje rozhranie kolekcie. Môže obsahovať iba jedinečný kľúč, ale môže mať duplicitné prvky. Existujú dve rozhrania, ktoré implementujú mapu v jazyku Java, a to rozhranie mapy a triedená mapa.

matematické metódy v Jave

4) Aký je rozdiel medzi ArrayList a Vector?

NieArrayListVektor
1)ArrayList nie je synchronizovaný.Vektor je synchronizovaný.
2)ArrayList nie je starou triedou.Vektor je starou triedou.
3)ArrayList zväčší svoju veľkosť o 50 % veľkosti poľa.Vektor zväčší svoju veľkosť zdvojnásobením veľkosti poľa.
4)ArrayList nie je ?thread-safe? pretože nie je synchronizovaný.Vektorový zoznam je ?bezpečný pre vlákna? pretože každá metóda je synchronizovaná.

5) Aký je rozdiel medzi ArrayList a LinkedList?

NieArrayListLinkedList
1)ArrayList používa dynamické pole.LinkedList používa dvojito prepojený zoznam.
2)ArrayList nie je efektívny na manipuláciu, pretože sa vyžaduje príliš veľa.LinkedList je efektívny na manipuláciu.
3)ArrayList je vhodnejší na ukladanie a načítanie údajov.LinkedList je lepšie manipulovať s údajmi.
4)ArrayList poskytuje náhodný prístup.LinkedList neposkytuje náhodný prístup.
5)ArrayList zaberá menej pamäte, pretože ukladá iba objektLinkedList zaberá viac pamäte, pretože ukladá objekt aj adresu tohto objektu.

6) Aký je rozdiel medzi Iteratorom a ListIteratorom?

Iterator prechádza prvkami iba smerom dopredu, zatiaľ čo ListIterator prechádza prvkami smerom dopredu a dozadu.

NieIterátorListIterator
1)Iterátor prechádza prvkami iba v smere dopredu.ListIterator prechádza prvkami v smere dozadu aj dopredu.
2)Iterátor možno použiť v zozname, množine a fronte.ListIterator možno použiť iba v zozname.
3)Iterátor môže vykonať operáciu odstránenia iba pri prechádzaní kolekciou.ListIterator môže vykonávať ?add,? ?odstrániť,? a ?nastaviť? prevádzky pri prechádzaní zberom.

7) Aký je rozdiel medzi Iterátorom a Enumeráciou?

NieIterátorEnumerácia
1)Iterátor môže prechádzať staršími a nestarými prvkami.Enumerácia môže prechádzať iba staršími prvkami.
2)Iterátor je rýchly.Enumerácia nie je rýchla.
3)Iterátor je pomalší ako Enumerácia.Enumerácia je rýchlejšia ako Iterator.
4)Iterátor môže vykonávať operáciu odstránenia pri prechádzaní kolekciou.Enumerácia môže vykonávať iba operáciu prechodu na kolekciu.

8) Aký je rozdiel medzi zoznamom a súborom?

Zoznam aj Nastaviť rozširujú rozhranie kolekcie. Existujú však určité rozdiely medzi oboma, ktoré sú uvedené nižšie.

  • Zoznam môže obsahovať duplicitné prvky, zatiaľ čo sada obsahuje jedinečné položky.
  • Zoznam je usporiadaná kolekcia, ktorá zachováva poradie vloženia, zatiaľ čo Set je neusporiadaná kolekcia, ktorá neuchováva poradie vloženia.
  • Rozhranie List obsahuje jednu starú triedu, ktorou je trieda Vector, zatiaľ čo rozhranie Set nemá žiadnu staršiu triedu.
  • Rozhranie zoznamu môže povoliť n počet hodnôt null, zatiaľ čo rozhranie Set umožňuje iba jednu hodnotu null.

9) Aký je rozdiel medzi HashSet a TreeSet?

HashSet a TreeSet, obe triedy, implementujú rozhranie Set. Rozdiely medzi oboma sú uvedené nižšie.

  • HashSet neudržiava�žiadne poradie�zatiaľ čo TreeSet udržiava�vzostupné poradie.
  • HashSet je ohrozený hašovacou tabuľkou, zatiaľ čo TreeSet je implementovaný stromovou štruktúrou.
  • HashSet funguje rýchlejšie ako TreeSet.
  • HashSet je podporovaný HashMap, zatiaľ čo TreeSet je podporovaný TreeMap.

10) Aký je rozdiel medzi Set a Map?

Rozdiely medzi súpravou a mapou sú uvedené nižšie.

  • Sada obsahuje iba hodnoty, zatiaľ čo mapa obsahuje kľúč aj hodnoty.
  • Sada obsahuje jedinečné hodnoty, zatiaľ čo mapa môže obsahovať jedinečné kľúče s duplicitnými hodnotami.
  • Sada obsahuje jedno číslo nulovej hodnoty, zatiaľ čo Map môže obsahovať jeden nulový kľúč s n počtom nulových hodnôt.

11) Aký je rozdiel medzi HashSet a HashMap?

Rozdiely medzi HashSet a HashMap sú uvedené nižšie.

  • HashSet obsahuje iba hodnoty, zatiaľ čo HashMap obsahuje položku (kľúč, hodnotu). HashSet je možné iterovať, ale HashMap sa musí previesť na Set, aby sa mohol iterovať.
  • HashSet implementuje rozhranie Set, zatiaľ čo HashMap implementuje rozhranie mapy
  • HashSet nemôže mať žiadnu duplicitnú hodnotu, zatiaľ čo HashMap môže obsahovať duplicitné hodnoty s jedinečnými kľúčmi.
  • HashSet obsahuje jediné číslo null, zatiaľ čo HashMap môže obsahovať jeden nulový kľúč s n počtom null hodnôt.

12) Aký je rozdiel medzi HashMap a TreeMap?

Rozdiely medzi HashMap a TreeMap sú uvedené nižšie.

  • HashMap neuchováva žiadne poradie, ale TreeMap udržiava vzostupné poradie.
  • HashMap je implementovaná hash tabuľkou, zatiaľ čo TreeMap je implementovaná stromovou štruktúrou.
  • HashMap je možné triediť podľa kľúča alebo hodnoty, zatiaľ čo TreeMap je možné triediť podľa kľúča.
  • HashMap môže obsahovať nulový kľúč s viacerými hodnotami null, zatiaľ čo TreeMap nemôže obsahovať nulový kľúč, ale môže mať viacero hodnôt null.

13) Aký je rozdiel medzi HashMap a Hashtable?

NieHashMapHashtable
1)HashMap nie je synchronizovaná.Hashtable je synchronizovaný.
2)HashMap môže obsahovať jeden kľúč null a viacero hodnôt null.Hashovacia tabuľka nemôže obsahovať žiadny kľúč null ani hodnotu null.
3)HashMap nie je ?thread-safe? takže je to užitočné pre aplikácie bez vlákien.Hashtable je bezpečný pre vlákna a možno ho zdieľať medzi rôznymi vláknami.
4)4) HashMap zdedí triedu AbstractMapHashtable zdedí triedu Dictionary.

14) Aký je rozdiel medzi kolekciou a kolekciou?

Rozdiely medzi zbierkou a zbierkami sú uvedené nižšie.

mylivecricket
  • Kolekcia je rozhranie, zatiaľ čo kolekcia je trieda.
  • Rozhranie kolekcie poskytuje štandardnú funkčnosť štruktúry údajov na zoznamy, sady a fronty. Trieda Collections však má triediť a synchronizovať prvky kolekcie.
  • Rozhranie Collection poskytuje metódy, ktoré možno použiť na štruktúru údajov, zatiaľ čo trieda Collections poskytuje statické metódy, ktoré možno použiť na rôzne operácie s kolekciou.

15) Aký je rozdiel medzi porovnateľným a porovnateľným?

NiePorovnateľnéPorovnávač
1)Porovnateľné poskytuje iba jeden druh sekvencie.Komparátor poskytuje viacero druhov sekvencií.
2)Poskytuje jednu metódu s názvom CompareTo().Poskytuje jednu metódu s názvom Compare().
3)Nachádza sa v balíku java.lang.Nachádza sa v balíku java.util.
4)Ak implementujeme rozhranie Comparable, skutočná trieda sa upraví.Aktuálna trieda sa nemení.

16) Čo rozumiete pod pojmom BlockingQueue?

BlockingQueue je rozhranie, ktoré rozširuje rozhranie Queue. Poskytuje súbežnosť operácií, ako je vyhľadávanie, vkladanie, mazanie. Pri získavaní akéhokoľvek prvku čaká, kým nebude front prázdny. Pri ukladaní prvkov čaká na voľné miesto. BlockingQueue nemôže obsahovať prvky null a implementácia BlockingQueue je bezpečná pre vlákna.

Syntax:

 public interface BlockingQueue extends Queue 

17) Aká je výhoda súboru Vlastnosti?

Ak zmeníte hodnotu v súbore vlastností, triedu java nemusíte znova kompilovať. Vďaka tomu je spravovanie aplikácie jednoduché. Používa sa na ukladanie informácií, ktoré je potrebné často meniť. Zvážte nasledujúci príklad.

 import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } } 

Výkon

 system oracle 

18) Čo znamená metóda hashCode()?

Metóda hashCode() vracia hodnotu hash kódu (celé číslo).

Metóda hashCode() vracia rovnaké celé číslo, ak sú dva kľúče (volaním metódy equals() identické).

Je však možné, že dve čísla hash kódov môžu mať rôzne alebo rovnaké kľúče.

Ak dva objekty nevytvoria rovnaký výsledok pomocou metódy equals(), potom metóda hashcode() poskytne odlišný celočíselný výsledok pre oba objekty.


19) Prečo prepisujeme metódu equals()?

Metóda rovná sa používa na kontrolu, či sú dva objekty rovnaké alebo nie. Ak chceme kontrolovať objekty na základe vlastnosti, je potrebné ho prepísať.

Napríklad zamestnanec je trieda, ktorá má 3 dátové členy: id, meno a plat. Chceme však kontrolovať rovnosť zamestnaneckého objektu pri mzde. Potom musíme prepísať metódu equals().


20) Ako synchronizovať prvky zoznamu, množiny a mapy?

Áno, trieda Collections poskytuje metódy na synchronizáciu prvkov zoznamu, množiny alebo mapy:

public static List synchronizedList(List l){}
public static Set synchronizedSet(Set s){}
public static SortedSet synchronizedSortedSet(SortedSet s){}
verejná statická mapa synchronizovanáMap(Mapa m){}
verejná statická SortedMap synchronizedSortedMap(SortedMap m){}

21) Aká je výhoda generickej kolekcie?

Používanie generickej kolekcie má tri hlavné výhody.

  • Ak použijeme generickú triedu, nepotrebujeme pretypovanie.
  • Je typovo bezpečný a kontrolovaný v čase kompilácie.
  • Generic potvrdzuje stabilitu kódu tým, že ho robí detekovateľným v čase kompilácie.

22) Čo je hašovacia kolízia v Hashtable a ako sa s ňou zaobchádza v Jave?

Dva rôzne kľúče s rovnakou hodnotou hash sú známe ako hash-collision. Aby sa predišlo kolízii, v jedinom segmente hash budú uložené dva samostatné záznamy. Existujú dva spôsoby, ako sa vyhnúť zrážke hash.

  • Samostatné reťazenie
  • Otvorte Addressing

23) Čo je trieda Slovník?

Trieda Dictionary poskytuje možnosť ukladať páry kľúč – hodnota.


24) Aká je predvolená veľkosť faktora zaťaženia v kolekcii založenej na hashovaní?

Predvolená veľkosť faktora zaťaženia je 0,75 . Predvolená kapacita sa vypočíta ako počiatočná kapacita * faktor zaťaženia. Napríklad 16 * 0,75 = 12. 12 je teda predvolená kapacita mapy.


25) Čo rozumiete pod pojmom fail-fast?

Iterátor v jazyku Java, ktorý okamžite vyvolá výnimku ConcurrentmodificationException, ak dôjde k akejkoľvek štrukturálnej zmene, sa nazýva iterátor s rýchlym zlyhaním. Iterátor Fail-fats nevyžaduje žiadne ďalšie miesto v pamäti.


26) Aký je rozdiel medzi Array a ArrayList?

Hlavné rozdiely medzi Array a ArrayList sú uvedené nižšie.

SNPoleArrayList
1Pole má pevnú veľkosť, čo znamená, že nemôžeme meniť veľkosť poľa podľa potreby.ArrayList nemá pevnú veľkosť, veľkosť môžeme dynamicky meniť.
2Polia sú statického typu.ArrayList má dynamickú veľkosť.
3Polia môžu uchovávať primitívne dátové typy, ako aj objekty.ArrayList nemôže ukladať primitívne dátové typy, môže ukladať iba objekty.

27) Aký je rozdiel medzi dĺžkou poľa a veľkosťou poľa ArrayList?

Dĺžka poľa sa dá získať pomocou vlastnosti length, zatiaľ čo ArrayList nepodporuje vlastnosť length, ale na získanie počtu objektov v zozname môžeme použiť metódu size().

Nájdenie dĺžky poľa

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

Nájdenie veľkosti ArrayList

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) Ako previesť ArrayList na Array a Array na ArrayList?

Pole môžeme previesť na ArrayList pomocou metódy asList() triedy Arrays. Metóda asList() je statická metóda triedy Arrays a akceptuje objekt List. Zvážte nasledujúcu syntax:

latexové písmo
 Arrays.asList(item) 

ArrayList môžeme previesť na Array pomocou metódy toArray() triedy ArrayList. Zvážte nasledujúcu syntax na konverziu ArrayList na objekt List.

 List_object.toArray(new�String[List_object.size()]) 

29) Ako urobiť Java ArrayList len ​​na čítanie?

Java ArrayList môžeme získať len na čítanie volaním metódy Collections.unmodifiableCollection(). Keď definujeme ArrayList ako Read-only, potom nemôžeme vykonávať žiadnu modifikáciu v kolekcii pomocou metódy �add(), remove() alebo set().


30) Ako odstrániť duplikáty z ArrayList?

Existujú dva spôsoby, ako odstrániť duplikáty z ArrayList.

    Použitie HashSet:Použitím HashSet môžeme odstrániť duplicitný prvok z ArrayList, ale potom nezachová poradie vloženia.Použitie LinkedHashSet:Poradie vloženia môžeme zachovať aj použitím LinkedHashSet namiesto HashSet.

Proces odstránenia duplicitných prvkov z ArrayList pomocou LinkedHashSet:

  • Skopírujte všetky prvky ArrayList do LinkedHashSet.
  • Vyprázdnite ArrayList pomocou metódy clear(), ktorá odstráni všetky prvky zo zoznamu.
  • Teraz skopírujte všetky prvky LinkedHashset do ArrayList.

31) Ako obrátiť ArrayList?

Na zvrátenie ArrayList môžeme použiť metódu reverse() triedy Collections. Zvážte nasledujúci príklad.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Výkon

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) Ako zoradiť ArrayList v zostupnom poradí?

Na zoradenie ArrayList v zostupnom poradí môžeme použiť metódu reverseOrder triedy Collections. Zvážte nasledujúci príklad.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Výkon

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) Ako synchronizovať ArrayList?

ArrayList môžeme synchronizovať dvoma spôsobmi.

  • Použitie metódy Collections.synchronizedList().
  • Pomocou CopyOnWriteArrayList

3. 4) Kedy použiť ArrayList a LinkedList?

LinkedLists je lepšie použiť na operácie aktualizácie, zatiaľ čo ArrayLists je lepšie použiť na operácie vyhľadávania.