logo

Java Collections intervjufrågor och svar

Java Collection Framework introducerades i JDK 1.2 som innehåller alla samlingsklasser och gränssnitt. Java samling är ett ramverk som tillhandahåller en mekanism för att lagra och manipulera samlingen av objekt. Det ger utvecklare tillgång till färdigpaketerade datastrukturer och algoritmer för att manipulera data.

I den här artikeln har vi täckt de 50 bästa Java Collections intervjufrågor och svar som täcker allt från grundläggande till avancerade Java-samlingskoncept som navigationssamling, WeakHashMap, streams Lambdas etc. Oavsett om du är en fräschare eller en erfaren Java-utvecklare , dessa Java Collections intervjufrågor ger dig allt det självförtroende du behöver för att klara din nästa Java-intervju.



Java Collections intervjufrågor

Java Collections intervjufrågor

Vi har delat upp de 50 frågorna i två delar: Erfarna och Freshers. Låt oss börja med frågorna till Freshers.

Innehållsförteckning



Java Collection intervjufrågor för nybörjare

1. Vad är Collection i Java?

Termen samling hänvisar till en grupp av objekt representerade som en enhet. Klasser i Java-samlingens klasshierarki är uppdelade i två rot gränssnitt: Samling (java.util.Collection) och Karta (java.util.Map) . Termer som du kommer att stöta på när du lär dig om samlingen i Java:

  • Insamlingsram: Javas Collection Framework definierar klasser och gränssnitt för att representera grupper av objekt som en enda enhet. C++-utvecklare kan jämföra samlingsramverket med STL (Standard Template Library) och Container Framework med Collection Framework om de kommer från en C++-bakgrund.
  • Samlingsgränssnitt: En klasss gränssnitt anger vad den ska göra, inte hur. Det är med andra ord ritningen för klassen. Det här gränssnittet tillhandahåller de vanligaste metoderna för alla samlingsobjekt som ingår i Collection Framework. Alternativt representerar det det enskilda objektet som en helhet.
  • Samlingsklass: En medlem av Collection Framework, det är en del av java.util-paketet. Samlingsobjektet är försett med många verktygsmetoder i denna klass.

2. Vad är ett ramverk i Java?

Ramar är uppsättningar av klasser och gränssnitt som ger en färdig arkitektur. Det är inte nödvändigt att definiera ett ramverk för att implementera nya funktioner eller klasser. Som ett resultat inkluderar en optimal objektorienterad design ett ramverk som innehåller en samling klasser som alla utför liknande uppgifter. Ramverket kan användas på en mängd olika sätt, till exempel genom att anropa dess metoder, utöka det och tillhandahålla återuppringningar, lyssnare och andra implementeringar. Några av de populära ramverken i java är:

  • Vår
  • Övervintra
  • Fjäderben
  • Google Web Toolkit (GWT)
  • JavaServer Faces (JSF)

3. Vad är skillnaden mellan Array och Collection i Java?

Arrayer är en samling av liknande variabler med ett vanligt namn i Java. Det finns vissa skillnader mellan arrayer i Java och C/C++. Å andra sidan är samlingar grupper av individuella objekt som bildar en enda enhet känd som samlingen av objekt.



Matriser

Samling

Matriser är fixerade i storlek, vilket är att när vi väl skapar en matris kan vi inte öka eller minska baserat på våra krav. Kollektionen är odlingsbar till sin natur och är baserad på våra krav. Vi kan öka eller minska storleken.
Med avseende på minne rekommenderas inte Arrays för användning. När det gäller minne rekommenderas samlingar för användning.
Med avseende på prestanda rekommenderas Arrays för användning. Med avseende på prestanda rekommenderas inte samlingar för användning.
Matriser kan endast innehålla homogena datatypelement. Samling kan innehålla både homogena och heterogena element.

För mer information, se artikeln – Skillnaden mellan matriser och samlingar i Java

4. Vilka olika gränssnitt används i Java Collections Framework?

Samlingen är känd som roten till samlingshierarkin. Samlingar representerar grupper av objekt som kallas element. Java-plattformen tillhandahåller ingen direkt implementering av detta gränssnitt men samlingsgränssnittet implementeras av list- och setklasser.

  • Samlingsgränssnitt
  • Listgränssnitt
  • Ställ in gränssnitt
  • Kögränssnitt
  • Avköa gränssnitt
  • Kartgränssnitt

5. Förklara hierarkin för samlingsramverket i Java.

Alla klasser och gränssnitt som krävs av samlingsramverket finns i verktygspaketet (java. util). Samlingsramverk har ett gränssnitt som kallas iterable interface, vilket gör att iteratorn kan iterera över alla samlingar. Utöver detta gränssnitt fungerar huvudinsamlingsgränssnittet som en rot för samlingsramverket. Alla samlingar utökar detta samlingsgränssnitt och utökar därmed egenskaperna för iteratorn och metoderna för detta gränssnitt. Följande figur illustrerar hierarkin i samlingsramverket.

Java Collection Hierarki

6. Vilka är fördelarna med insamlingsramen?

Fördelar med Collection Framework: Eftersom avsaknaden av en insamlingsram gav upphov till ovanstående uppsättning av nackdelar, är följande fördelar med insamlingsramen.

  • Konsekvent API: API:et har en grundläggande uppsättning gränssnitt som Samling , Uppsättning , Lista , eller Karta , alla klasser (ArrayList, LinkedList, Vector, etc) som implementerar dessa gränssnitt har några gemensamma metoder.
  • Minskar programmeringsansträngning: En programmerare behöver inte oroa sig för utformningen av samlingen utan han kan snarare fokusera på dess bästa användning i sitt program. Därför har det grundläggande konceptet för objektorienterad programmering (dvs.) abstraktion implementerats framgångsrikt.
  • Ökar programhastighet och kvalitet: Ökar prestanda genom att tillhandahålla högpresterande implementeringar av användbara datastrukturer och algoritmer eftersom programmeraren i det här fallet inte behöver tänka på den bästa implementeringen av en specifik datastruktur. Han kan helt enkelt använda den bästa implementeringen för att drastiskt öka prestandan för sin algoritm/program.

7. Vad är ArrayList i Java?

ArrayList är en del av Java-samlingsramverket och det är en klass av java.util-paketet. Det ger oss dynamiska arrayer i Java. De främsta fördelarna med ArrayList är att om vi deklarerar en array så behövs den för att nämna storleken men i ArrayList behövs det inte nämna storleken på ArrayList om du vill nämna storleken så kan du göra det.

Arraylista

Bild på Array List

För mer information, se artikeln – ArrayList i Java

8. Vad är skillnaden mellan Collection och Collections?

Samling Samlingar
Det är ett gränssnitt. Det är en bruksklass.
Den används för att representera en grupp av enskilda objekt som en enda enhet. Den definierar flera verktygsmetoder som används för att arbeta med insamling.
The Collection är ett gränssnitt som innehåller en statisk metod sedan java8. Gränssnittet kan också innehålla abstrakta metoder och standardmetoder. Den innehåller bara statiska metoder.

För mer information, se artikeln – Samling vs samlingar i Java med exempel

9. Skillnaden mellan ArrayList och LinkedList i java-samlingsramverket?

ArrayList vs LinkedList

ArrayList och LinkedList

ArrayList

Länkad lista

Den här klassen använder en dynamisk array för att lagra elementen i den. Med introduktionen av generika stöder denna klass lagring av alla typer av objekt. Den här klassen använder en dubbellänkad lista för att lagra elementen i den. I likhet med ArrayList stöder denna klass även lagring av alla typer av objekt.
Att manipulera ArrayList tar längre tid på grund av den interna implementeringen. Närhelst vi tar bort ett element, internt, korsas arrayen och minnesbitarna förskjuts. Att manipulera LinkedList tar mindre tid jämfört med ArrayList eftersom det i en dubbellänkad lista inte finns något koncept för att flytta minnesbitarna. Listan går igenom och referenslänken ändras.
Denna klass implementerar ett List-gränssnitt. Därför fungerar detta som en lista. Denna klass implementerar både List-gränssnittet och Deque-gränssnittet. Därför kan den fungera som en lista och en deque.
Denna klass fungerar bättre när applikationen kräver lagring av data och åtkomst till den. Denna klass fungerar bättre när applikationen kräver manipulering av lagrad data.

För mer information, se artikeln – ArrayList vs LinkedList i Java

10. Vad är en iterator?

Javas samlingsramverk använder iteratorer för att hämta element en efter en. Denna iterator är universell eftersom den kan användas med alla typer av samlingsobjekt. Med Iterator kan vi utföra både läsning och borttagning. Detta är en förbättrad version av Enumeration med tillägg av att ta bort element.

Vid uppräkning av element i alla Collection framework implementerade gränssnitt, som t.ex Uppsättning , Lista , , Om vad , och alla implementerade klasser av Map, måste en Iterator användas. Den enda markören som är tillgänglig för hela samlingsramverket är iteratorn. Med metoden iterator() i Collection-gränssnittet kan du skapa ett iteratorobjekt.

Syntax:

Iterator itr = c.  iterator  ();>

Notera: Här är c ​​vilket samlingsobjekt som helst. itr är av typen Iterator-gränssnitt och hänvisar till c.

För mer information, se artikeln – Iteratorer i Java

11. Vad är skillnaden mellan en iterator och en uppräkning?

En stor skillnad mellan iterator och enumeration är att iteratorer har en remove()-metod medan enumerationer inte har det. Med hjälp av Iterator kan vi alltså manipulera objekt genom att lägga till och ta bort dem från samlingar. Eftersom uppräkning bara kan gå igenom objekt och hämta dem, fungerar den som ett skrivskyddat gränssnitt.

För mer information, se artikeln – Skillnaden mellan Iterator och Enumeration

12. Vad är skillnaden mellan List och Set i Java

En stor skillnad mellan en lista och en uppsättning är att en lista kan innehålla dubbletter av element medan en uppsättning endast innehåller unika element. Listan är Ordnad och bibehåller ordningen för objektet som de läggs till. Setet är oordnat.

Lista

Uppsättning

Listan är en indexerad sekvens. Uppsättningen är en icke-indexerad sekvens.
Listan tillåter dubbletter av element Uppsättningen tillåter inte dubbletter av element.
Element genom deras position kan nås. Positionsåtkomst till element är inte tillåten.
Flera nullelement kan lagras. Null-element kan bara lagras en gång.
Listimplementationer är ArrayList, LinkedList, Vector, Stack Uppsättningsimplementationer är HashSet, LinkedHashSet.

För mer information, se artikeln – Skillnaden mellan Lista och Set i Java

13. Vilka är de bästa metoderna för Java Collections Framework?

Följande är några av de bästa metoderna när du använder Java Collections:

  • Program bör skrivas som gränssnitt, inte implementeringar, så vi kan ändra implementeringen senare.
  • När det är möjligt, använd Generics för att säkerställa typsäkerhet och undvika ClassCastExceptions.
  • Att välja lämplig typ av samling utifrån behovet. Till exempel, om storleken är fast, kanske vi vill använda en Array över en ArrayList. När vi itererar över kartan bör vi använda LinkedHashMap. Set är det bästa sättet att undvika dubbletter.
  • Använd oföränderliga klasser som tillhandahålls av JDK som nycklar i Map för att undvika implementering av hashCode() och equals().
  • För att öka läsbarheten av koden bör vi använda isEmpty() istället för att hitta storleken på samlingen och jämföra den med noll.
  • Istället för att skriva din egen implementering använder du verktygsklassen Collections för att få skrivskyddade, Synkroniserade eller tomma samlingar istället. Det förbättrar kodåteranvändningen samtidigt som det resulterar i större stabilitet.

14. Vad är en prioriterad kö i Java?

Prioritetsköer används för att bearbeta objekt enligt deras prioritet. Köer följer First-In-First-Out-algoritmen, men ibland behöver köns delar bearbetas enligt deras prioritet, vilket är där PriorityQueue kommer in i bilden. Prioritetsköer baseras på prioriterade högar.

Elementen i prioritetskön ordnas enligt den naturliga ordningen, eller av en komparator som tillhandahålls vid kökonstruktionstid, beroende på vilken konstruktör som används.

Prioriterade köer i Java

Prioriterade köer i Java

Deklaration:

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

Klassen implementerar Serialiserbara, Iterable, Collection och Queue-gränssnitt.

15. Vad är skillnaden mellan List, set och map i java?

Lista

Uppsättning

Karta

Listgränssnittet tillåter dubbletter av element

Uppsättningen tillåter inte dubbletter av element.

Kartan tillåter inte dubbletter av element

Listan bibehåller insättningsordningen.

Uppsättningen upprätthåller ingen insättningsordning.

Kartan upprätthåller inte heller någon insättningsordning.

Vi kan lägga till valfritt antal nollvärden.

Men i uppsättningen nästan bara ett nollvärde.

Kartan tillåter högst en enda nollnyckel och valfritt antal nollvärden.

Listimplementeringsklasserna är Array List och LinkedList.

Uppsättningsimplementeringsklasser är HashSet, LinkedHashSet och TreeSet.

Kartimplementeringsklasser är HashMap, HashTable, TreeMap, ConcurrentHashMap och LinkedHashMap.

För mer information, se artikeln – Skillnaden mellan Lista, Set och Map i Java

16. Vad är skillnaden mellan Queue och Stack?

Stack

Stacks fungerar enligt LIFO-principen, vilket innebär att elementet som sätts in sist kommer att vara det första elementet som tas ut. Köer fungerar enligt FIFO-principen, vilket innebär att elementet som sätts in först kommer att vara det första elementet som tas ut.
I stackar sker insättning och radering endast från toppen. I köer sker insättning längst bak i listan och radering sker från framsidan av listan.
Insättningsoperation kallas push-operation. Infogningsoperation kallas köoperation.
Ta bort operation kallas pop operation. Raderingsoperationen kallas för ködrift.
Toppen av en stack pekar alltid på det sista elementet i listan, vilket är den enda pekaren som används för att komma åt listan. Två pekare bibehålls för åtkomst till köer. Den främre pekaren pekar på det första infogade elementet och den bakre pekaren pekar på det sist infogade elementet.

17. Vad är BlockingQueue i Java?

BlockingQueue-gränssnittet i Java läggs till i Java 1.5 tillsammans med olika andra samtidiga Utility-klasser som ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList, etc. BlockingQueue-gränssnittet stöder flödeskontroll (utöver kö) genom att introducera blockering om antingen BlockingQueue är full eller tom.

En tråd som försöker ställa ett element i en hel kö blockeras tills någon annan tråd gör plats i kön, antingen genom att ta bort ett eller flera element eller rensa kön helt. På samma sätt blockerar den en tråd som försöker ta bort från en tom kö tills några andra trådar infogar ett objekt. BlockingQueue accepterar inte ett nollvärde. Om vi ​​försöker ställa null-objektet i kö, så kastar det NullPointerException.

Användning av BlockingQueue

Blockering av kö i Java

Blockering av kö i Java

Hierarkin för BlockingQueue

Hierarki för blockeringskö i Java

Hierarki för blockeringskö i Java

Deklaration:

public interface BlockingQueue extends Queue>

Här, OCH är den typ av element som lagras i samlingen.

För mer information, se artikeln – BlockingQueue Interface i Java

18. Vad är hashCode()?

Bild för att demonstrera Java Hash Code

Bild för att demonstrera Java Hash Code

hashCode()-metoden returnerar hashcode-värdet som ett heltal. Den är definierad i Java Object-klassen som beräknar hash-värdena för givna indataobjekt. Hashcode-värde används mest i hashing-baserade samlingar som HashMap, HashSet, HashTable….etc. Denna metod måste åsidosättas i varje klass som åsidosätter metoden equals().

Syntax :

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

För mer information, se artikeln – equals() och hashCode() metoder i Java

19. Skilj mellan ArrayList och Vector i Java Collection Framework.

I samlingsintervjuer ställs denna fråga ofta; dock är Vector synkroniserad medan ArrayList inte är det. ArrayList är snabbare än Vector. ArrayLists arraystorlek ökas med 50 % när det behövs, medan Vectors kapacitet fördubblas när det behövs.

Array List vs Vector i java

Array List vs Vector i java

ArrayList

Vektor

ArrayList är inte synkroniserad Vektorn är synkroniserad.
Storleken på ArrayList ökas med upp till 50 % av den aktuella arraystorleken om antalet element överskrider dess kapacitet. Storleken på ArrayList ökas upp till 100 % av den aktuella arraystorleken om antalet element överskrider dess kapacitet.
ArrayList är snabb eftersom den inte är synkroniserad. Vektorn är långsammare eftersom den är synkroniserad.
Iteratorgränssnittet används för att korsa elementen Ett iteratorgränssnitt eller Enumeration kan användas för att korsa vektorn.

För mer information, se artikeln – Vector vs ArrayList i Java

20. Gör skillnad på Iterator och ListIterator.

Iterator

ListIterator

Kan korsa element som finns i samlingen endast i riktning framåt. Kan korsa element som finns i samlingen både framåt och bakåt.
Hjälper till att gå igenom karta, lista och uppsättning. Kan bara gå igenom List och inte de andra två.
Index kan inte erhållas genom att använda Iterator. Den har metoder som nextIndex() och previousIndex() för att erhålla index av element när som helst när du går igenom listan.
Det går inte att ändra eller ersätta element som finns i samlingen Vi kan modifiera eller ersätta element med hjälp av set(E e)

För mer information, se artikeln – Skillnaden mellan en Iterator och ListIterator

21. Vad är skillnaden mellan en iterator och en uppräkning?

Iterator: Det är en universell iterator eftersom vi kan tillämpa den på alla samlingsobjekt. Genom att använda en Iterator kan vi utföra både läs- och borttagningsoperationer.

Syntax:

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

Uppräkning: Uppräkning (eller enum) är en användardefinierad datatyp. Det används främst för att tilldela namn till integralkonstanter, namnen gör ett program lätt att läsa och underhålla.

Syntax:

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

Iterator

Uppräkning

Iteratorn är en universell markör eftersom den är tillämplig på alla samlingsklasser. Uppräkning är inte en universell markör eftersom den endast gäller äldre klasser.
Iteratorn har metoden remove(). Uppräkning har inte metoden remove().
Iteratorn kan göra ändringar (t.ex. med metoden remove() som tar bort elementet från samlingen under traversering). Uppräkningsgränssnittet fungerar som ett skrivskyddat gränssnitt, man kan inte göra några modifieringar av samlingen när man går igenom elementen i samlingen.
Iterator är inte ett äldre gränssnitt. Iterator kan användas för korsning av HashMap, LinkedList, ArrayList, HashSet, TreeMap och TreeSet. Enumeration är ett äldre gränssnitt som används för att korsa Vector och Hashtable.

För mer information, se artikeln – Skillnaden mellan Iterator och Enumeration

22. Vilka funktioner har Java Hashmap?

HashMap liknar HashTable, men det är osynkroniserat. Det tillåter oss att lagra null-nycklarna också, men det bör bara finnas ett null-nyckelobjekt och det kan finnas hur många nullvärden som helst. Denna klass ger inga garantier för ordningen på kartan. För att använda den här klassen och dess metoder måste du importera java.util. HashMap paket eller dess superklass.

b+ träd
HashMap i Java

HashMap i Java

Syntax:

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

Parametrar: Det krävs två parametrar nämligen som följer:

  • Typen av nycklar som underhålls av denna karta (K)
  • Typen av mappade värden (V)

För mer information, se artikeln – HashMap i Java med exempel

23. Vad är samlingsgränssnitt?

De Samling gränssnittet är medlem i Java Collections Framework. Det är en del av java.util paket. Det är ett av rotgränssnitten i samlingshierarkin. Samlingsgränssnittet implementeras inte direkt av någon klass. Det implementeras dock indirekt via dess undertyper eller undergränssnitt som List, Queue och Set.

Till exempel, klassen HashSet implementerar Set-gränssnittet som är ett undergränssnitt till Collection-gränssnittet. Om en samlingsimplementering inte implementerar en viss operation, bör den definiera motsvarande metod för att kasta UnsupportedOperationException.

Insamlingshierarkin:

Samlingsgränssnitt i Java

Samlingsgränssnitt i Java

24. Förklara listgränssnittet.

Klassgränssnitt i Java

Klassgränssnitt i Java

I Java tillåter List-gränssnittet användaren att lagra en ordnad samling objekt. Listan är samlingens underordnade gränssnitt. I samling är en lista en ordnad samling av objekt som kan ha dubbletter av värden. Eftersom List bevarar insättningsordningen tillåter den positionell åtkomst och infogning, vilket också tillåter dubbletter av värden.

Syntax:

public interface List extends Collection ;>

Detta listgränssnitt implementeras av olika klasser som ArrayList, Vector, Stack, etc. Eftersom alla underklasser implementerar listan kan vi instansiera ett listobjekt med vilken som helst av dessa klasser.

Exempel:

List al = new ArrayList ();
Lista ll = new LinkedList ();
Lista v = ny vektor ();

Där T är objektets typ

Arraylista i Java

Arraylista i Java

Klasserna som implementerar List-gränssnittet är följande:

  • ArrayList
  • Länkad lista
  • Vektor
  • Stack

25. Skriv ett program för att konvertera en given array till en samling med metoden asList().

För att konvertera arraybaserad data till samlingsbaserad kan vi använda java.util.Arrays klass. Den här klassen tillhandahåller en statisk metod asList(T...a) som omvandlar arrayen till en samling.

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

>

>

Produktion

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

26. Gör skillnad på HashSet och HashMap

HashSet

HashMap

HashSet implementerar Set-gränssnittet HashMap implementerar kartgränssnittet
Inga dubbletter är tillåtna Ja dubblettvärden är tillåtna men ingen dubblettnyckel tillåts
Dummyvärden är tillåtna i HashSet. Inga dummyvärden är tillåtna i HashMap.
Ett enstaka objekt krävs under en tilläggsoperation 2 objekt krävs under en tilläggsoperation
Hastigheten är jämförelsevis långsammare än HashMap Hastigheten är jämförelsevis snabbare än HashSet på grund av att hashteknik har använts här.
Har ett enda nollvärde En enda nollnyckel och valfritt antal nollvärden
Add()-metoden används för infogningen Metoden put () används för infogning.

För mer information, se artikeln – Skillnaden mellan HashMap och HashSet

27. Gör skillnad på HashSet och HashTable.

HashSet

HashTable

HashSet tillåter NULL-element HashTable tillåter inte NULL-element.

Objekt som du infogar i HashSet är inte garanterade att infogas i samma ordning. Objekt infogas baserat på deras hashkod. LinkedHashSet kan användas för att upprätthålla ordning.

HashTable upprätthåller inte insättningsordningen.
HashSet är inte synkroniserat men det kan synkroniseras externt. HashTable är synkroniserad.
add()-metoden används för att infoga i HashSet put()-metoden används för att infoga i HashTable

28. Vilken är standardstorleken på belastningsfaktorn i den hashbaserade samlingen?

När belastningsfaktorn ökar, ökar kapaciteten så att den operativa komplexiteten för HashMap förblir O(1) om förhållandet mellan det nuvarande elementet och den initiala kapaciteten passerar tröskeln. Betydelsen av operationell komplexitet för O(1) betyder att hämtnings- och infogningsoperationerna tar konstant tid. Standardstorleken för belastningsfaktor är 0,75 . Standardkapaciteten beräknas genom att multiplicera den initiala kapaciteten med belastningsfaktorn.

För mer information, se artikeln – Belastningsfaktor i HashMap i Java med exempel

Java Collection intervjufrågor för erfarna

29. Vad är skillnaden mellan Comparable och Comparator i Java?

Java tillhandahåller två gränssnitt för att sortera objekt med hjälp av datamedlemmar i klassen:

  • Jämförbar
  • Komparator

Jämförbar

Komparator

Det jämförbara gränssnittet ger en enda sorteringssekvens. Komparatorgränssnittet tillhandahåller flera sorteringssekvenser.
Den faktiska klassen modifieras av ett jämförbart gränssnitt Den faktiska klassen ändras inte av Comparator-gränssnittet.
metoden compareTo() används för att sortera element. metoden compare() används för att sortera element.
Comparable finns i paketet java.lang Comparator finns i paketet java.util

För mer information, se artikeln – Jämförbar vs Comparator i Java

30. Vad är skillnaden mellan fail-fast och failsafe?

Iteratorer i Java används för att iterera över samlingsobjekten. Fail-Fast iteratorer kastar omedelbart ConcurrentModificationException om det är en strukturell modifiering av samlingen. Strukturell modifiering innebär att lägga till eller ta bort något element från en samling medan en tråd itererar över den samlingen. Iterator på ArrayList- och HashMap-klasserna är några exempel på misslyckade Iterator.

Fail-Fast Felsäker
ConcurrentModificationException kastas när objektet ändras under iterationsprocessen. Inget undantag görs
Fail-Fast behöver mindre minne under processen. Fail-Safe iterator kräver mer minne under processen.
Ett klonobjekt skapas inte under iterationsprocessen. Ett klonobjekt eller en kopia skapas under iterationsprocessen.
Fail-Fast tillåter inte ändringar under iterationsprocessen. Fail-Safe tillåter modifiering under iterationsprocessen.
Fail-Fast är snabbt, Fail-Safe är något långsammare än fail fast.

Exempel:

ArrayList, Vector, HashMap, HashSet, etc.

Exempel:

ConcurrentHashMap, CopyOnWriteArrayList, etc.

För mer information, se artikeln – Fail Fast och Fail Safe Iterators i Java

31. Skriv ett program för att iterera listan med lambda-uttrycket.

Iteration kan göras med hjälp av en lambda uttryck.

Syntax:

list_name.forEach(variable->{//kodblock})>

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

>

>

Produktion

Geeks for Geeks>

För mer information, se artikeln – Iterera genom List i Java

32. Vad är IdentityHashMap?

IdentityHashMap implementerar kartgränssnittet med hjälp av Hashtable, och jämför nycklar (och värden) med referenslikhet istället för objektlikhet. Den här klassen implementerar Map-gränssnittet, men den bryter avsiktligt Maps allmänna kontrakt, som kräver att objekt jämförs med metoden equals(). Denna klass används när användaren tillåter att objekt jämförs med hjälp av referenser. Det tillhör paketet java.util.

För mer information, se artikeln – IdentityHashMap-klass i Java

33. Skriv ett program i Java för att visa innehållet i en hashtabell med hjälp av uppräkning.

Hashable-klassen implementerar en hashtabell, som mappar nycklar till värden. Alla icke-nullobjekt kan användas som en nyckel eller som ett värde. För att framgångsrikt lagra och hämta objekt från en hashtabell måste objekten som används som nycklar implementera hashCode-metoden och equals-metoden. Nedan är programmet för att visa innehållet i en HashTable med hjälp av uppräkning:

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

>

>

Produktion

Geeks for Geeks>

34. Skriv ett program i java för att få samlingsvyn av värdena som finns i en HashMap.

Javas HashMap-klass har metoden java.util.HashMap.values() för att skapa samlingar av HashMap-värden. Det returnerar i princip en samlingsvy av HashMap-värden.

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

>

>

Produktion

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

För mer information, se artikeln – HashMap values() Metod i Java

35. Skriv ett program för att sammanfoga två ArrayList till en enda ArrayList.

Med tanke på två ArrayLists i Java är vår uppgift att gå med i dessa ArrayLists.

grundläggande java-intervjufrågor

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

>

>

Produktion

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

För mer information, se artikeln – Gå med i två ArrayLists i Java

36. Hur kan du synkronisera en ArrayList i Java?

Genom att använda metoden Collections.synchronizedList() kan vi synkronisera våra samlingar i Java. SynchronizedList() returnerar en synkroniserad (trådsäker) lista uppbackad av ett urval.

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

>

>

Produktion

Eat Coffee Code Sleep Repeat>

37. Vad är en egenskapsklass i Java?

Egenskapsklassen är en underklass till Hashtable. Egenskapsklassen lagrar en lista med värden vars nyckel är en sträng och vars värde också är en sträng. Egenskaper kan definiera andra egenskapsklasslistor, men standard är egenskaper.

Funktioner i egenskapsklassen:

  • Fastighet är en underklass till Hashtable.
  • Egenskapsfilen används för att lagra och hämta strängdatatyp för en lista med värden där nyckeln är en sträng och värdet också är en sträng.
  • Om den ursprungliga egenskapslistan inte innehåller en viss nyckelegenskap, kommer standardegenskapslistan att sökas istället.
  • Objekt kan delas av flera trådar utan extern synkronisering.
  • Egenskapsklassen kan användas för att hämta systemets egenskaper.

För mer information, se artikeln – Egenskapsklass i Java

38. Vad händer om du använder HashMap i en multitrådad Java-applikation?

I en miljö med flera trådar, om flera trådar ändrar kartan strukturellt, som att lägga till, ta bort eller ändra mappningar, kan den interna datastrukturen i HashMap skadas och det kan finnas några saknade länkar, felaktiga poster och själva kartan kan bli helt värdelös. Därför bör du inte använda HashMap i en samtidig applikation; använd istället ConcurrentHashMap eller Hashtable som är trådsäkert. ConcurrentHashMap inkluderar alla Hashtables metoder såväl som full samtidighet av hämtningar och uppdateringar.

Hur blev ThreadSafeConcurrentHashMap trådsäker?

  • java.util.Concurrent.ConcurrentHashMap-klassen ger trådsäkerhet genom att dela upp kartan i segment, vilket gör att låset endast kan tas en gång per segment, dvs en gång för varje tråd.
  • Läsoperationen i ConcurrentHashMap kräver inget lås.

För mer information, se artikeln – Hur uppnår ConcurrentHashMap trådsäkerhet i Java?

39. Vad händer om två olika nycklar av HashMap returnerar samma hashcode()?

När två olika nycklar av HashMap returnerar samma hashkod kommer de att hamna i samma hink; därför kommer kollisioner att inträffa. i fall av kollision, dvs. index för två eller flera noder är detsamma, förenas noder av en länklista, dvs. den andra noden refereras till av den första noden och den tredje av den andra, och så vidare.

För mer information, se artikeln – Internt arbete av HashMap i Java

40. Vad är WeakHashMap?

WeakHashMap implementerar kartgränssnittet. Till skillnad från HashMap tillåter WeakHashMap sophämtning även om objektet som anges som nyckel inte innehåller några referenser trots att det är associerat med WeakHashMap. Garbage Collector är med andra ord bättre än WeakHashMap.

För mer information, se artikeln – Hashmap vs WeakHashMap i Java

41. Vad är UnsupportedOperationException?

I samband med API:er eller listimplementeringar är UnsupportedOperationException ett vanligt undantag. Undantaget görs när den begärda operationen inte kan utföras. Den här klassen är medlem i Java Collections Framework.

Syntax:

public class UnsupportedOperationException extends RuntimeException>

För mer information, se artikeln – UnsupportedOperationException

42. Hur gör man en samling skrivskyddad i Java?

Att skapa en skrivskyddad samling innebär att objektet begränsas till att bara hämta data och inte lägga till eller ta bort data. Java har olika metoder för olika samlingstyper som unmodifiableCollection(), unmodifiableMap(), ununmodifiableSet(), etc. java.util. Collections-klassen definierar alla metoder. Metoden unmodifiableCollection() skapar en skrivskyddad samling. Det kräver en referens till samlingsklassen. Om vi ​​har ett objekt av Set Interface, kan vi använda unmodifiableSet() för att göra skrivskyddad.

För mer information, se artikeln – Hur man gör en samling skrivskyddad i Java?

43. Skillnad mellan PriorityQueue och TreeSet i Java?

Prioritetskö

Träduppsättning

PriorityQueue kommer i JDK 1.5. TreeSet kommer i JDK 1.4.
Datastrukturen som används av PriorityQueue är Queue Datastrukturen som används av TreeSet är inställd.
Dubblettelement är tillåtna. Duplicerade element är inte tillåtna.
Förutom rotelementet följer inte resten av elementen någon speciell ordning i PriorityQueue. I TreeSet förblir alla element i den sorterade ordningen.
Genom att använda PriorityQueue kan vi hämta det största eller minsta elementet i O(1)-tid. TreeSet tillhandahåller inte ett sätt att hämta det största eller minsta elementet i O(1)-tid, men eftersom de är i sorterad ordning får det det första eller sista elementet i O(1)-tid.

För mer information, se artikeln – Skillnaden mellan PriorityQueue och TreeSet

44. Vad är diamantoperatorn i Java?

Diamantoperatorer används för att förenkla användningen av generika när man skapar objekt samtidigt som man undviker okontrollerade varningar i ett program. När Diamond-operatorn introducerades i Java 7 kan vi skapa objektet utan att nämna den generiska typen på höger sida av uttrycket som visas nedan.

Syntax:

List list = new ArrayList();>

För mer information, se artikeln – Diamantoperatör

45. Hur TreeMap fungerar i Java?

Trädkarta lagrar nyckel-värdeparen, men TreeMap sorterar nycklarna stigande snarare än fallande som HashMap. Beroende på vilken konstruktor som används kommer TreeMap att sorteras antingen baserat på dess nycklar eller av en komparator. I TreeMap sorteras elementen utifrån ett röd-svart träd. Ett röd-svart träd är ett självbalanserande binärt sökträd där varje nod har en extra bit, och den biten tolkas ofta som färgen (röd eller svart). Dessa färger används för att säkerställa att trädet förblir balanserat under insättningar och borttagningar.

Struktur för en nod i Java

Struktur för en nod i Java

För mer information, se artikeln – Internt arbete av TreeMap i Java

46. ​​Lista ner sätt att iterera över Karta i java?

HashMap-klassen tillhandahåller Javas kartgränssnitt genom att lagra data i (nyckel, värde) par och komma åt dem med ett index av en annan typ. För att använda denna klass är det nödvändigt att importera java.util.HashMap paket eller dess superklass.

Det finns många sätt att iterera över HashMap, varav 5 är listade nedan:

  1. Iterera genom en HashMap EntrySet med iteratorer.
  2. Iterera genom HashMap KeySet med Iterator.
  3. Iterera HashMap med för varje slinga.
  4. Itererar genom en HashMap med Lambda Expressions.
  5. Gå igenom en HashMap med Stream API.

För mer information, se artikeln – Hur man itererar HashMap i Java

47. Vad är CopyOnWriteArrayList i Java?

CopyOnWriteArrayList i Java

CopyOnWriteArrayList i Java

JDK 1.5 introducerade en förbättrad version av ArrayList som heter CopyOnWriteArrayList, där alla ändringar (lägg till, ställ in, ta bort, etc) implementeras av en ny kopia. Den finns i java.util.concurrent. Det är en datastruktur skapad för att användas i en samtidig miljö. I en trådbaserad miljö är CopyOnWriteArrayList avsedd för frekvent läsning och sällsynta uppdateringar. CopyOnWriteArrayList är en trådsäker version av ArrayList.

För mer information, se artikeln – CopyOnWriteArrayList i Java

48. Vad är EnumMap i Java?

EnumMap är en implementering av kartgränssnittet specifikt för uppräkningstyper. EnumMap-klassen är medlem i Java Collections Framework och är inte synkroniserad. Den utökar AbstractMap och implementerar kartgränssnittet i java. EnumMap tillhör paketet java.util.

Syntax:

offentlig klass EnumMaputökar AbstractMap implementerar Serializable, Cloneable

// K måste utöka Enum, vilket upprätthåller kravet att nycklarna måste vara av den specificerade enumtypen.

Parametrar:

  • Nyckelobjektstyp
  • Värdeobjekttyp
EnumMap i Java

EnumMap i Java

För mer information, se artikeln – EnumMap-klass i Java

49. Hur fungerar Hashmap internt?

HashMap fungerar på principen om hashing. HashMap innehåller en array av Node och Node kan representera en klass som har följande objekt:

  • int hash
  • K-nyckel
  • V-värde
  • Nod nästa

HashMaps interna funktion:

  • Hashing
  • Hinkar
  • Indexberäkning i Hashmap

För mer information, se artikeln – Internt arbete av HashMap i Java

femtio. Varför anses iterator i hashmap misslyckas?

misslyckade iteratorer ger omedelbart samtidiga modifieringsundantag om någon tråd utifrån försöker modifiera samlingen som de itererar på. Felsnabbfunktionen säkerställer att iteratorn misslyckas omedelbart om den upptäcker att någon modifiering av samlingen kommer att leda till avvikande beteende i framtiden.

Misslyckas snabbt funktionen säkerställer att om iterator anser att modifiering av samlingen skulle resultera i onormalt beteende vid någon tidpunkt i framtiden, misslyckas den omedelbart.

Exempel:

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

>

>

Produktion:

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

Slutsats

Java-samlingar är viktigt att förstå för Java-utvecklare eller programmerare eftersom Java används flitigt i olika branscher. Det är viktigt för utvecklare att ha en gedigen förståelse för kärnkoncepten för Java Collections. Java är ett av de mest använda språken i toppföretag som t.ex Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazon , etc. För att komma in i dessa företag eller andra IT-företag måste du behärska dessa oftast ställda Java Collections intervjufrågor för att kunna knäcka deras Java-baserade onlinebedömning och tekniska intervju.

Om du vill träna på kodningsfrågor, JAVA samlingsprogram kan vara en användbar resurs.

Java Collections Intervjufrågor – Vanliga frågor

1. Vad är samlingar i Java-intervjufrågor?

Samling i Java är ett ramverk som används för att lagra och manipulera samlingar av objekt.

2. Vilka är de fyra samlingsklasserna i Java?

Det finns många samlingar i Java men av dem är de mest använda samlingarna:

  1. ArrayList
  2. Länkad lista
  3. HashSet
  4. Stack

3. Kan HashMap ha dubbletter av nycklar?

Nej, HashMap kan inte ha dubbletter av nycklar. Eftersom HashMap är en av samlingarna i Java, lagrar den värdet i form av nyckel-värde och varje nyckel har sitt eget värde kopplat till det. Så eftersom ingen nyckel kan ha två värden betyder det att vi inte kan ha dubbletter av nycklar i HashMap.

4. Varför är array inte en samling?

Arrayen är inte en samling, allt beror på skillnaden i funktionalitet mellan samlingar och arrayer, av vilka få nämns nedan:

  • Storleken på Arrayen kan inte ändras när den väl har deklarerats
  • Matriser kan endast innehålla homogena datatypelement.
  • Arrayen kan hålla både primitiva datatyper och objekt medan den i samlingar bara kan hålla omslagsobjekt.