logo

34 Java Collections interjúkérdések

Java nyelven a gyűjteményinterjúkkal kapcsolatos kérdéseket teszik fel leginkább a kérdezők. Íme a leggyakrabban feltett kollekciós interjúkérdések listája válaszokkal.


1) Mi a Gyűjtemény keretrendszer a Java nyelven?

A Collection Framework osztályok és interfész kombinációja, amely az adatok objektumok formájában történő tárolására és kezelésére szolgál. Különféle osztályokat biztosít, például ArrayList, Vector, Stack és HashSet stb., valamint interfészeket, mint például List, Queue, Set stb.


2) Melyek a fő különbségek a tömb és a gyűjtemény között?

A tömb és a gyűjtemény némileg hasonló az objektumok hivatkozásainak tárolására és az adatok manipulálására, de sok tekintetben különböznek egymástól. A tömb és a gyűjtemény közötti fő különbségeket az alábbiakban definiáljuk:

  • A tömbök mindig fix méretűek, azaz a felhasználó nem növelheti vagy csökkentheti a tömb hosszát igénye szerint vagy futási időben, de a Gyűjteményben a méret igény szerint dinamikusan változtatható.
  • A tömbök csak homogén vagy hasonló típusú objektumokat tárolhatnak, de a Gyűjteményben heterogén objektumok is tárolhatók.
  • A tömbök nem tudják biztosítani a ?kész? a felhasználói igények kielégítésére szolgáló módszerek, mint a rendezés, keresés stb., de a Gyűjtemény használatra kész módszereket tartalmaz.

3) Magyarázza el a Gyűjtemény keretrendszerében használt különböző interfészek?

A Gyűjtemény keretrendszer különféle felületeket valósít meg, a Gyűjtemény interfész és a Map felület (java.util.Map) a Java Collection Framework főként használt felületei. A Collection Framework interfészeinek listája az alábbiakban található:

1. Gyűjtemény felület: A gyűjtemény (java.util.Collection) az elsődleges felület, és minden gyűjteménynek meg kell valósítania ezt a felületet.

Szintaxis:

 public interface Collectionextends Iterable 

Ahol azt jelenti, hogy ez az interfész általános típusú

2. Lista felület: A Lista felület kiterjeszti a Gyűjtemény felületet, és ez egy rendezett objektumgyűjtemény. Ismétlődő elemeket tartalmaz. Lehetővé teszi az elemek véletlenszerű elérését is.

Szintaxis:

 public interface List extends Collection 

3. Állítsa be a felületet: A Set (java.util.Set) felület egy olyan gyűjtemény, amely nem tartalmazhat ismétlődő elemeket. Csak a Gyűjtemény interfész örökölt metódusait tartalmazhatja

Szintaxis:

 public interface Set extends Collection 

Várólista felület: A Queue (java.util.Queue) interfész soradatstruktúrát határoz meg, amely az elemeket FIFO (first in first out) formában tárolja.

Szintaxis:

 public interface Queue extends Collection 

4. Sorba helyezési felület: ez egy kétvégű sor. Lehetővé teszi az elemek beillesztését és eltávolítását mindkét végéről. Mind a verem, mind a queue tulajdonságait beülteti, így képes LIFO (Last in first out) verem és FIFO (first in first out) sor műveletek végrehajtására.

Szintaxis:

 public interface Dequeue extends Queue 

5. Térképes felület: A térkép (java.util.Map) az elemek kulcs-értékpáros tárolója. A térképes felület nem valósítja meg a Gyűjtemény felületet. Csak egyedi kulcsot tartalmazhat, de lehetnek ismétlődő elemek. Két interfész van, amely a Térképet valósítja meg java-ban, ezek a Map interface és a Sorted Map.

a tigris és az oroszlán különbsége

4) Mi a különbség az ArrayList és a Vector között?

Nem.Tömb listaVektor
1)Az ArrayList nincs szinkronizálva.A vektor szinkronizálva van.
2)Az ArrayList nem egy örökölt osztály.A Vector egy örökölt osztály.
3)Az ArrayList a méretét a tömb méretének 50%-ával növeli.A Vector a tömb méretének megduplázásával növeli a méretét.
4)Az ArrayList nem ?szálbiztos? mivel nincs szinkronban.A vektorlista ?szálbiztos? mivel minden módszer szinkronban van.

5) Mi a különbség az ArrayList és a LinkedList között?

Nem.Tömb listaLinkedList
1)Az ArrayList dinamikus tömböt használ.A LinkedList duplán linkelt listát használ.
2)Az ArrayList nem hatékony a manipulációhoz, mert túl sok kell.A LinkedList hatékony a manipulációhoz.
3)Az ArrayList jobb az adatok tárolására és lekérésére.A LinkedList jobb az adatok manipulálására.
4)Az ArrayList véletlen hozzáférést biztosít.A LinkedList nem biztosít véletlenszerű hozzáférést.
5)Az ArrayList kevesebb memóriát foglal, mivel csak objektumot tárolA LinkedList több memóriát foglal el, mivel az objektumot és az objektum címét is tárolja.

6) Mi a különbség az Iterator és a ListIterator között?

Az Iterator csak előre, míg a ListIterator előre és hátra haladja az elemeket.

Nem.IterátorListIterator
1)Az Iterátor csak előre haladva halad át az elemeken.A ListIterator előre és hátrafelé haladva halad az elemeken.
2)Az Iterátor használható listában, készletben és sorban.A ListIterator csak a listában használható.
3)Az Iterátor csak a gyűjtemény bejárása közben tud eltávolítási műveletet végrehajtani.A ListIterator képes végrehajtani az ?add,? ?eltávolítani,? és ?készlet? művelet a gyűjtemény bejárása közben.

7) Mi a különbség az iterátor és a felsorolás között?

Nem.IterátorFelsorolás
1)Az Iterátor bejárhat örökölt és nem örökölt elemeket.A felsorolás csak örökölt elemeken haladhat át.
2)Az Iterator hibagyors.A felsorolás nem hibamentes.
3)Az Iterátor lassabb, mint az Enumeration.A felsorolás gyorsabb, mint az Iterator.
4)Az Iterátor végrehajthat eltávolítási műveletet a gyűjtemény bejárása közben.A felsorolás csak bejárási műveletet végezhet a gyűjteményen.

8) Mi a különbség a Lista és a Beállítás között?

A Lista és a Beállítás egyaránt kiterjeszti a gyűjtési felületet. Van azonban néhány különbség a kettő között, amelyeket alább felsorolunk.

  • A lista ismétlődő elemeket tartalmazhat, míg a készlet egyedi elemeket tartalmazhat.
  • A Lista egy rendezett gyűjtemény, amely fenntartja a beillesztési sorrendet, míg a Set egy rendezetlen gyűjtemény, amely nem őrzi meg a beillesztési sorrendet.
  • A Lista felület egyetlen örökölt osztályt tartalmaz, amely a Vector osztály, míg a Set interfésznek nincs örökölt osztálya.
  • A Lista felület n számú null értéket engedélyez, míg a Set interfész csak egyetlen null értéket engedélyez.

9) Mi a különbség a HashSet és a TreeSet között?

A HashSet és a TreeSet mindkét osztály a Set felületet valósítja meg. Az alábbiakban felsoroljuk a kettő közötti különbségeket.

  • A HashSet nem tart fenn sorrendet, míg a TreeSet növekvő sorrendet tart fenn.
  • A HashSet-et hash-tábla, míg a TreeSet-et egy fastruktúra implementálja.
  • A HashSet gyorsabban teljesít, mint a TreeSet.
  • A HashSet-et a HashMap, míg a TreeSet-et a TreeMap támogatja.

10) Mi a különbség a Beállítás és a Térkép között?

A készlet és a térkép közötti különbségek az alábbiakban láthatók.

  • A készlet csak értékeket tartalmaz, míg a Térkép kulcsot és értékeket egyaránt tartalmaz.
  • A készlet egyedi értékeket tartalmaz, míg a Térkép egyedi kulcsokat tartalmazhat ismétlődő értékekkel.
  • A készlet egyetlen számú null értéket tartalmaz, míg a Map egyetlen nullkulcsot tartalmazhat n számú null értékkel.

11) Mi a különbség a HashSet és a HashMap között?

Az alábbiakban felsoroljuk a HashSet és a HashMap közötti különbségeket.

  • A HashSet csak értékeket tartalmaz, míg a HashMap tartalmazza a bejegyzést (kulcs, érték). A HashSet iterálható, de a HashMap-nek át kell alakítania Set-et az iterációhoz.
  • A HashSet a Set interfészt, míg a HashMap a Map felületet valósítja meg
  • A HashSet nem rendelkezhet ismétlődő értékkel, míg a HashMap ismétlődő értékeket tartalmazhat egyedi kulcsokkal.
  • A HashSet az egyetlen számú null értéket tartalmazza, míg a HashMap egyetlen nullkulcsot tartalmazhat n számú null értékkel.

12) Mi a különbség a HashMap és a TreeMap között?

A HashMap és a TreeMap közötti különbségek az alábbiakban láthatók.

  • A HashMap nem tart fenn sorrendet, de a TreeMap fenntartja a növekvő sorrendet.
  • A HashMap-et hash-tábla, míg a TreeMap-et egy fastruktúra valósítja meg.
  • A HashMap kulcs vagy érték szerint, míg a TreeMap kulcs szerint rendezhető.
  • A HashMap tartalmazhat nullkulcsot több nullértékkel, míg a TreeMap nem tartalmazhat nullkulcsot, de több nullértékkel rendelkezhet.

13) Mi a különbség a HashMap és a Hashtable között?

Nem.HashMapHashtable
1)A HashMap nincs szinkronizálva.A Hashtable szinkronizálva van.
2)A HashMap tartalmazhat egy null kulcsot és több null értéket.A hashtable nem tartalmazhat null kulcsot vagy null értéket.
3)A HashMap nem ?szálbiztos,? így hasznos a nem szálas alkalmazásokhoz.A Hashtable szálbiztos, és különféle szálak között megosztható.
4)4) A HashMap örökli az AbstractMap osztálytA Hashtable örökli a Dictionary osztályt.

14) Mi a különbség a Gyűjtemény és a Gyűjtemények között?

A Gyűjtemény és a Gyűjtemények közötti különbségek az alábbiakban láthatók.

  • A Gyűjtemény egy felület, míg a Gyűjtemények egy osztály.
  • A Gyűjtemény interfész biztosítja a List, Set és Queue adatstruktúra szabványos funkcionalitását. Azonban a Gyűjtemények osztály a gyűjtemény elemeinek rendezésére és szinkronizálására szolgál.
  • A Gyűjtemény interfész biztosítja az adatszerkezethez használható metódusokat, míg a Collections osztály a statikus metódusokat, amelyek a gyűjtemény különféle műveleteihez használhatók.

15) Mi a különbség a Comparable és a Comparator között?

Nem.HasonlóÖsszehasonlító
1)A Comparable csak egyfajta sorozatot biztosít.A Comparator többféle sorozatot biztosít.
2)Ez egy összehasonlító() nevű metódust biztosít.Ez egy összehasonlító() nevű metódust biztosít.
3)A java.lang csomagban található.A java.util csomagban található.
4)Ha megvalósítjuk a Comparable interfészt, a tényleges osztály módosul.A tényleges osztály nem változik.

16) Mit értesz a BlockingQueue alatt?

A BlockingQueue egy interfész, amely kiterjeszti a Queue felületet. Egyidejűséget biztosít az olyan műveletekben, mint a visszakeresés, beillesztés, törlés. Bármely elem lekérésekor megvárja, hogy a sor ne legyen üres. Az elemek tárolása közben megvárja a szabad helyet. A BlockingQueue nem tartalmazhat null elemeket, és a BlockingQueue megvalósítása szálbiztos.

Szintaxis:

 public interface BlockingQueue extends Queue 

17) Mi az előnye a Properties fájlnak?

Ha megváltoztatja az értéket a tulajdonságfájlban, akkor nem kell újrafordítania a java osztályt. Így az alkalmazás könnyen kezelhetővé válik. A gyakran módosítandó információk tárolására szolgál. Tekintsük a következő példát.

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

Kimenet

 system oracle 

18) Mit jelent a hashCode() metódus?

A hashCode() metódus egy hash kód értéket (egy egész számot) ad vissza.

A hashCode() metódus ugyanazt az egész számot adja vissza, ha két kulcs (az equals() metódus meghívásával) azonos.

szimmetrikus különbség

Előfordulhat azonban, hogy két hash kódszám eltérő vagy azonos kulcsokkal rendelkezik.

Ha két objektum nem ad egyenlő eredményt az equals() metódus használatával, akkor a hashcode() metódus mindkét objektumhoz eltérő egész eredményt ad.


19) Miért írjuk felül az equals() metódust?

Az egyenlő metódus annak ellenőrzésére szolgál, hogy két objektum azonos-e vagy sem. Felül kell írni, ha a tulajdonság alapján akarjuk ellenőrizni az objektumokat.

Például az Employee egy osztály, amelynek 3 adattagja van: azonosító, név és fizetés. Ugyanakkor ellenőrizni akarjuk a munkavállalói egyenlőséget a fizetéssel. Ezután felül kell bírálnunk az equals() metódust.


20) Hogyan lehet szinkronizálni a lista, a készlet és a térkép elemeket?

Igen, a Gyűjtemények osztály módszereket biztosít a lista, készlet vagy leképezés elemek szinkronizálására:

nyilvános statikus lista synchronizedList(l. lista){}
public static Set synchronizedSet(Set s){}
nyilvános statikus SortedSet synchronizedSortedSet(SortedSet s){}
nyilvános statikus térkép szinkronizált térkép(m térkép){}
nyilvános statikus SortedMap synchronizedSortedMap(SortedMap m){}

21) Mi az előnye az általános gyűjteménynek?

Az általános gyűjtemény használatának három fő előnye van.

  • Ha az általános osztályt használjuk, nincs szükségünk a típusadásra.
  • Típusbiztos és a fordításkor ellenőrzött.
  • A Generic megerősíti a kód stabilitását azáltal, hogy a fordítás során észlelhetővé teszi a hibát.

22) Mi az a hash-collision a Hashtable-ban, és hogyan kezelhető a Java-ban?

Két különböző kulcsot azonos hash értékkel hash ütközésnek nevezünk. Az ütközés elkerülése érdekében két külön bejegyzést egyetlen hash vödörben tárolunk. A hash-ütközés elkerülésének két módja van.

  • Külön láncolás
  • Nyissa meg a Címzést

23) Mi az a szótár osztály?

A Szótár osztály lehetőséget biztosít kulcs-érték párok tárolására.


24) Mekkora a terhelési tényező alapértelmezett mérete a hash alapú gyűjtésben?

A terhelési tényező alapértelmezett mérete 0,75 . Az alapértelmezett kapacitás a kezdeti kapacitás * terhelési tényezőként kerül kiszámításra. Például 16 * 0,75 = 12. Tehát a 12 a Map alapértelmezett kapacitása.

egy java tömb visszaadása

25) Mit értesz „farag-fast” alatt?

A java Iterátorát, amely azonnal kiadja a ConcurrentmodificationException kivételt, ha szerkezeti módosítás történik, hibagyors iterátornak nevezzük. A Fail-fats iterator nem igényel extra helyet a memóriában.


26) Mi a különbség az Array és az ArrayList között?

Az Array és az ArrayList közötti fő különbségek az alábbiakban találhatók.

SNSorTömb lista
1A tömb fix méretű, ami azt jelenti, hogy nem tudjuk igény szerint átméretezni a tömböt.Az ArrayList nem a rögzített méretű, dinamikusan módosíthatjuk a méretet.
2A tömbök statikus típusúak.Az ArrayList dinamikus méretű.
3A tömbök primitív adattípusokat és objektumokat is tárolhatnak.Az ArrayList nem tudja tárolni a primitív adattípusokat, csak az objektumokat tudja tárolni.

27) Mi a különbség egy tömb hossza és az ArrayList mérete között?

A tömb hosszát a length tulajdonsággal lehet megtudni, míg az ArrayList nem támogatja a hossz tulajdonságot, de a size() metódus segítségével megkaphatjuk a listában lévő objektumok számát.

A tömb hosszának meghatározása

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

Az ArrayList méretének meghatározása

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

28) Hogyan lehet átalakítani az ArrayList-et Array-re és az Array-t ArrayList-re?

Egy Array-t ArrayList-vé alakíthatunk az Arrays osztály asList() metódusával. Az asList() metódus az Arrays osztály statikus metódusa, és elfogadja a List objektumot. Vegye figyelembe a következő szintaxist:

 Arrays.asList(item) 

Egy ArrayList-et Array-vé alakíthatunk az ArrayList osztály toArray() metódusával. Vegye figyelembe a következő szintaxist az ArrayList List objektummá konvertálásához.

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

29) Hogyan lehet a Java ArrayList-et csak olvashatóvá tenni?

A java ArrayList csak olvasható a Collections.unmodifiableCollection() metódus meghívásával érhető el. Ha egy ArrayList-et csak olvashatóként definiálunk, akkor nem hajthatunk végre semmilyen módosítást a gyűjteményben az �add(), remove() vagy set() metódusokkal.


30) Hogyan lehet eltávolítani a másolatokat az ArrayList-ből?

Kétféleképpen távolíthatja el a duplikációkat az ArrayList-ből.

    HashSet használata:A HashSet használatával eltávolíthatjuk az ismétlődő elemet az ArrayList-ből, de ez nem fogja megőrizni a beillesztési sorrendet.LinkedHashSet használata:A beillesztési sorrendet a HashSet helyett LinkedHashSet használatával is fenntarthatjuk.

Az ArrayList ismétlődő elemek eltávolításának folyamata a LinkedHashSet használatával:

  • Másolja az ArrayList összes elemét a LinkedHashSetbe.
  • Ürítse ki az ArrayList-et a clear() metódussal, amely eltávolítja az összes elemet a listából.
  • Most másolja a LinkedHashset összes elemét az ArrayList-be.

31) Hogyan lehet megfordítani az ArrayList-et?

Egy ArrayList visszafordításához használhatjuk a Collections osztály reverse() metódusát. Tekintsük a következő példát.

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

Kimenet

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

32) Hogyan lehet az ArrayList-et csökkenő sorrendbe rendezni?

Az ArrayList csökkenő sorrendbe rendezéséhez használhatjuk a Collections osztály reverseOrder metódusát. Tekintsük a következő példát.

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

Kimenet

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

33) Hogyan szinkronizáljuk az ArrayList-et?

Az ArrayList-et kétféleképpen tudjuk szinkronizálni.

  • Collections.synchronizedList() metódus használatával
  • A CopyOnWriteArrayList használata

3. 4) Mikor kell használni az ArrayList-et és a LinkedList-et?

A LinkedListeket jobb a frissítési műveletekhez használni, míg az ArrayListeket a keresési műveletekhez.