Java Collection Framework es va introduir a JDK 1.2 que conté totes les classes i interfícies de la col·lecció. Col·lecció Java és un marc que proporciona un mecanisme per emmagatzemar i manipular la col·lecció d'objectes. Permet als desenvolupadors accedir a estructures de dades preempaquetades i algorismes per manipular dades.
En aquest article, hem cobert els 50 millors Preguntes d'entrevista de col·leccions de Java i Respostes que cobreixen tot, des de conceptes bàsics fins a avançats de col·lecció Java, com ara la col·lecció de navegació, WeakHashMap, streams Lambdas, etc. Tant si sou un més fresca o un desenvolupador Java experimentat , aquestes preguntes d'entrevista de les col·leccions de Java us donen tota la confiança que necessiteu per assolir la vostra propera entrevista de Java.

Preguntes d'entrevista de col·leccions de Java
Hem dividit les 50 preguntes en dues parts: Experimentat i Freshers. Comencem amb les preguntes per a Freshers.
Taula de contingut
- Preguntes de l'entrevista de la col·lecció de Java per a persones que s'acosten
- Preguntes d'entrevista de la col·lecció Java per a persones amb experiència
Preguntes de l'entrevista de la col·lecció de Java per a persones que s'acosten
1. Què és la col·lecció a Java?
El terme col · lecció fa referència a un grup d'objectes representats com una unitat. Les classes de la jerarquia de classes de la col·lecció Java es divideixen en dues arrel interfícies: Col·lecció (java.util.Collection) i Mapa (java.util.Map) . Termes que trobareu mentre apreneu sobre la col·lecció a Java:
- Marc de la col·lecció: El marc de col·lecció de Java defineix classes i interfícies per representar grups d'objectes com una única entitat. Els desenvolupadors de C++ poden comparar el marc de col·lecció amb STL (Biblioteca de plantilles estàndard) i Container Framework amb Collection Framework si provenen d'un fons C++.
- Interfície de col·lecció: La interfície d'una classe especifica què ha de fer, no com. En altres paraules, és el pla per a la classe. Aquesta interfície proporciona els mètodes més comuns per a tots els objectes de col·lecció que formen part del marc de col·lecció. Alternativament, representa l'objecte individual com un tot.
- Classe de col·leccions: Membre de Collection Framework, forma part del paquet java.util. L'objecte de col·lecció es proporciona amb molts mètodes d'utilitat en aquesta classe.
2. Què és un Framework a Java?
Els marcs són conjunts classes i interfícies que proporcionen una arquitectura ja feta. No és necessari definir un marc per implementar noves característiques o classes. Com a resultat, un disseny òptim orientat a objectes inclou un marc que conté una col·lecció de classes que realitzen tasques similars. El marc es pot utilitzar de diverses maneres, com ara trucant als seus mètodes, ampliant-lo i subministrant devolucions de trucada, escoltes i altres implementacions. Alguns dels frameworks més populars de Java són:
- Primavera
- Hibernar
- Puntals
- Google Web Toolkit (GWT)
- JavaServer Faces (JSF)
3. Quina diferència hi ha entre Array i Collection a Java?
Les matrius són una col·lecció de variables de tipus similar amb un nom comú a Java. Hi ha algunes diferències entre les matrius en Java i C/C++. D'altra banda, les col·leccions són grups d'objectes individuals que formen una única entitat coneguda com a col·lecció d'objectes.
| Arrays | Col · lecció |
|---|---|
| Les matrius tenen una mida fixa, és a dir, un cop creem una matriu, no podem augmentar ni disminuir en funció dels nostres requisits. | La col·lecció és de naturalesa cultivable i es basa en els nostres requisits. Podem augmentar o disminuir la mida. |
| Pel que fa a la memòria, no es recomana l'ús de matrius. | Pel que fa a la memòria, es recomana l'ús de col·leccions. |
| Pel que fa al rendiment, es recomana l'ús de matrius. | Pel que fa al rendiment, no es recomana l'ús de col·leccions. |
| Les matrius només poden contenir elements de tipus de dades homogenis. | La col·lecció pot contenir tant elements homogenis com heterogenis. |
Per a més informació, consulteu l'article - Diferència entre matrius i col·leccions a Java
4. Quines són les diferents interfícies utilitzades a Java Collections Framework?
La col·lecció es coneix com l'arrel de la jerarquia de la col·lecció. Les col·leccions representen grups d'objectes coneguts com a elements. La plataforma java no proporciona cap implementació directa d'aquesta interfície, però la interfície de col·lecció està sent implementada per les classes List i Set.
- Interfície de col·lecció
- Interfície de llista
- Estableix la interfície
- Interfície de cua
- Interfície de retirada de la cua
- Interfície de mapa
5. Expliqueu la jerarquia del marc de col·lecció en Java.
Totes les classes i interfícies requerides pel marc de col·lecció estan contingudes al paquet d'utilitat (java. util). Els marcs de col·lecció tenen una interfície anomenada interfície iterable, que permet a l'iterador iterar sobre totes les col·leccions. A més d'aquesta interfície, la interfície de col·lecció principal actua com a arrel per al marc de col·lecció. Totes les col·leccions amplien aquesta interfície de col·lecció, ampliant així les propietats de l'iterador i els mètodes d'aquesta interfície. La figura següent il·lustra la jerarquia del marc de col·lecció.
Jerarquia de col·lecció Java
6. Quins avantatges té el Framework de col·lecció?
Avantatges del marc de recollida: Com que la manca d'un marc de recollida va donar lloc al conjunt d'inconvenients anteriors, els següents són els avantatges del marc de recollida.
- API coherent: L'API té un conjunt bàsic d'interfícies com Col · lecció , Conjunt , Llista , o Mapa , totes les classes (ArrayList, LinkedList, Vector, etc.) que implementen aquestes interfícies tenen alguns conjunt de mètodes comuns.
- Redueix l'esforç de programació: Un programador no s'ha de preocupar pel disseny de la col·lecció, sinó que pot centrar-se en el millor ús del seu programa. Per tant, s'ha implementat amb èxit el concepte bàsic de programació orientada a objectes (és a dir, abstracció).
- Augmenta la velocitat i la qualitat del programa: Augmenta el rendiment proporcionant implementacions d'alt rendiment d'estructures i algorismes de dades útils perquè, en aquest cas, el programador no necessita pensar en la millor implementació d'una estructura de dades específica. Simplement pot utilitzar la millor implementació per augmentar dràsticament el rendiment del seu algorisme/programa.
7. Què és ArrayList a Java?
ArrayList és una part del marc de col·lecció Java i és una classe del paquet java.util. Ens proporciona matrius dinàmiques en Java. Els principals avantatges de ArrayList són, si declarem una matriu, cal esmentar la mida, però a ArrayList, no cal esmentar la mida de ArrayList si voleu esmentar la mida, podeu fer-ho.

Imatge de la llista de matrius
Per a més informació, consulteu l'article - ArrayList en Java
8. Quina diferència hi ha entre Col·lecció i Col·leccions?
| Col · lecció | Col·leccions |
|---|---|
| És una interfície. | És una classe d'utilitat. |
| S'utilitza per representar un grup d'objectes individuals com una unitat única. | Defineix diversos mètodes d'utilitat que s'utilitzen per operar en la recollida. |
| La Col·lecció és una interfície que conté un mètode estàtic des de java8. La interfície també pot contenir mètodes abstractes i predeterminats. | Conté només mètodes estàtics. |
Per a més informació, consulteu l'article - Col·lecció vs col·leccions a Java amb exemple
9. Diferència entre ArrayList i LinkedList al marc de col·lecció java?

ArrayList i LinkedList
| ArrayList | LinkedList |
|---|---|
| Aquesta classe utilitza una matriu dinàmica per emmagatzemar-hi els elements. Amb la introducció dels genèrics, aquesta classe admet l'emmagatzematge de tot tipus d'objectes. | Aquesta classe utilitza una llista doblement enllaçada per emmagatzemar-hi els elements. De manera similar a la ArrayList, aquesta classe també admet l'emmagatzematge de tot tipus d'objectes. |
| La manipulació de ArrayList triga més temps a causa de la implementació interna. Sempre que eliminem un element, internament, es recorre la matriu i es desplacen els bits de memòria. | La manipulació de LinkedList requereix menys temps en comparació amb ArrayList perquè, en una llista doblement enllaçada, no hi ha cap concepte de desplaçament dels bits de memòria. Es recorre la llista i es canvia l'enllaç de referència. |
| Aquesta classe implementa una interfície de llista. Per tant, això actua com una llista. | Aquesta classe implementa tant la interfície List com la interfície Deque. Per tant, pot actuar com una llista i un deque. |
| Aquesta classe funciona millor quan l'aplicació requereix emmagatzemar les dades i accedir-hi. | Aquesta classe funciona millor quan l'aplicació exigeix la manipulació de les dades emmagatzemades. |
Per a més informació, consulteu l'article - ArrayList vs LinkedList a Java
10. Què és un iterador?
Framework de col·lecció de Java utilitza iteradors per recuperar els elements un per un. Aquest iterador és universal ja que es pot utilitzar amb qualsevol tipus d'objecte Col·lecció. Amb Iterator, podem realitzar tant operacions de lectura com d'eliminació. Aquesta és una versió millorada de l'enumeració amb l'addició d'eliminar elements.
Quan s'enumeren elements a totes les interfícies implementades del marc de col·lecció, com ara Conjunt , Llista , Cua , Dec , i totes les classes implementades de Map, s'ha d'utilitzar un iterador. L'únic cursor disponible per a tot el marc de la col·lecció és l'iterador. Mitjançant el mètode iterator() a la interfície Col·lecció, podeu crear un objecte iterador.
patrons de disseny en java
Sintaxi:
Iterator itr = c. iterator ();>
Nota: Aquí c és qualsevol objecte de col·lecció. itr és de tipus interfície Iterator i fa referència a c.
Per a més informació, consulteu l'article - Iteradors en Java
11. Quina diferència hi ha entre un iterador i una enumeració?
Una diferència important entre iterador i enumeració és que els iteradors tenen un mètode remove() mentre que les enumeracions no. Així, mitjançant Iterator podem manipular objectes afegint-los i eliminant-los de les col·leccions. Com que l'enumeració només pot travessar objectes i recuperar-los, es comporta com una interfície de només lectura.
Per a més informació, consulteu l'article - Diferència entre iterador i enumeració
12. Quina diferència hi ha entre List i Set a Java
Una diferència important entre una llista i un conjunt és que una llista pot contenir elements duplicats mentre que un conjunt només conté elements únics. La llista està ordenada i manté l'ordre de l'objecte al qual s'afegeixen. El conjunt no està ordenat.
| Llista | Conjunt |
|---|---|
| La llista és una seqüència indexada. | El conjunt és una seqüència no indexada. |
| La llista permet duplicar elements | El conjunt no permet elements duplicats. |
| Es pot accedir als elements per la seva posició. | No està permès l'accés de posició als elements. |
| Es poden emmagatzemar diversos elements nuls. | Els elements nuls només es poden emmagatzemar una vegada. |
| Les implementacions de llista són ArrayList, LinkedList, Vector, Stack | Les implementacions del conjunt són HashSet, LinkedHashSet. |
Per a més informació, consulteu l'article - Diferència entre llista i conjunt a Java
13. Quines són les millors pràctiques per a Java Collections Framework?
A continuació es mostren algunes de les millors pràctiques quan s'utilitza Java Collections:
- Els programes s'han d'escriure com a interfícies, no com a implementacions, de manera que podem modificar la implementació més tard.
- Sempre que sigui possible, utilitzeu Genèrics per garantir la seguretat del tipus i evitar ClassCastExceptions.
- Escollir el tipus de recollida adequat en funció de la necessitat. Per exemple, si la mida és fixa, podríem voler utilitzar un Array sobre un ArrayList. En iterar sobre el mapa, hauríem d'utilitzar LinkedHashMap. Set és la millor manera d'evitar duplicats.
- Utilitzeu classes immutables proporcionades per JDK com a claus a Map per evitar la implementació de hashCode() i equals().
- Per tal d'augmentar la llegibilitat del codi, hauríem d'utilitzar isEmpty() en lloc de trobar la mida de la col·lecció i comparar-la amb zero.
- En lloc d'escriure la vostra pròpia implementació, utilitzeu la classe d'utilitat Col·leccions per obtenir col·leccions de només lectura, sincronitzades o buides. Millora la reutilització del codi alhora que resulta en una major estabilitat.
14. Què és una cua de prioritat a Java?
Les cues de prioritat s'utilitzen per processar objectes segons la seva prioritat. Les cues segueixen l'algorisme First-In-First-Out, però de vegades els elements de la cua s'han de processar segons la seva prioritat, que és on entra en joc PriorityQueue. Les cues de prioritat es basen en munts de prioritat.
Els elements de la cua de prioritat s'ordenen segons l'ordenació natural, o mitjançant un comparador proporcionat en el moment de la construcció de la cua, segons quin constructor s'utilitzi.

Cues de prioritat a Java
Declaració:
public class PriorityQueue extends AbstractQueue implements Serializable where E is the type of elements held in this queue>
La classe implementa interfícies serialitzables, iterables, de col·lecció i de cua.
15. Quina diferència hi ha entre Llista, conjunt i mapa a Java?
| Llista | Conjunt | Mapa |
|---|---|---|
| La interfície de llista permet duplicar elements | El conjunt no permet elements duplicats. | El mapa no permet elements duplicats |
| La llista manté l'ordre d'inserció. | El conjunt no manté cap ordre d'inserció. | El mapa tampoc manté cap ordre d'inserció. |
| Podem afegir qualsevol nombre de valors nuls. | Però al conjunt gairebé només un valor nul. | El mapa permet una única clau nul·la com a màxim i qualsevol nombre de valors nuls. |
| Les classes d'implementació de la llista són Array List i LinkedList. | Les classes d'implementació establertes són HashSet, LinkedHashSet i TreeSet. | Les classes d'implementació de mapes són HashMap, HashTable, TreeMap, ConcurrentHashMap i LinkedHashMap. |
Per a més informació, consulteu l'article - Diferència entre llista, conjunt i mapa a Java
16. Quina diferència hi ha entre la cua i la pila?
| Pila | Cua |
|---|---|
| Stacks funciona segons el principi LIFO, el que significa que l'element inserit en l'últim serà el primer element que es traurà. | Les cues funcionen segons el principi FIFO, que vol dir que l'element inserit primer serà el primer que es traurà. |
| A les piles, la inserció i les supressions es fan només des de la part superior. | A les cues, la inserció es produeix a la part posterior de la llista i l'eliminació es fa des del capdavant de la llista. |
| L'operació d'inserció s'anomena operació push. | L'operació d'inserció s'anomena operació de cua. |
| L'operació d'eliminació s'anomena operació pop. | L'operació de supressió s'anomena operació de retirada de la cua. |
| La part superior d'una pila sempre apunta a l'últim element de la llista, que és l'únic punter utilitzat per accedir a la llista. | Es mantenen dos punters per accedir a les cues. El punter frontal apunta al primer element inserit, i el punter posterior apunta al darrer element inserit. |
17. Què és BlockingQueue a Java?
La interfície BlockingQueue a Java s'afegeix a Java 1.5 juntament amb altres classes d'utilitat concurrents com ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList, etc. La interfície BlockingQueue admet el control de flux (a més de la cua) introduint el bloqueig si BlockingQueue està ple o buit.
Un fil que intenta posar un element en una cua completa es bloqueja fins que un altre fil fa espai a la cua, ja sigui retirant un o més elements o esborrant la cua completament. De la mateixa manera, bloqueja un fil que intenta suprimir d'una cua buida fins que altres fils insereixen un element. BlockingQueue no accepta un valor nul. Si intentem posar en cua l'element nul, llavors llança NullPointerException.
Ús de BlockingQueue

Bloqueig de la cua a Java
La jerarquia de BlockingQueue

Jerarquia de la cua de bloqueig a Java
Declaració:
public interface BlockingQueue extends Queue>
Aquí, I és el tipus d'elements emmagatzemats a la Col·lecció.
Per a més informació, consulteu l'article - Interfície BlockingQueue a Java
18. Què és el codi hash()?

Imatge per demostrar el codi hash de Java
El mètode hashCode() retorna el valor del codi hash com un nombre enter. Es defineix a la classe Java Object que calcula els valors hash d'objectes d'entrada donats. El valor Hashcode s'utilitza principalment en col·leccions basades en hash com HashMap, HashSet, HashTable... etc. Aquest mètode s'ha de substituir a totes les classes que anul·lin el mètode equals().
Sintaxi:
public int hashCode() // This method returns the hash code value // for the object on which this method is invoked.>
Per a més informació, consulteu l'article - mètodes equals() i hashCode() a Java
19. Distingeix entre ArrayList i Vector al Java Collection Framework.
En les entrevistes de col·lecció, aquesta pregunta es fa sovint; tanmateix, Vector està sincronitzat mentre que ArrayList no. ArrayList és més ràpid que Vector. La mida de la matriu de ArrayList s'augmenta un 50% quan cal, mentre que la capacitat de Vector es duplica cada vegada que es necessita.

Array List vs Vector a Java
| ArrayList | Vector |
|---|---|
| ArrayList no està sincronitzat | El vector està sincronitzat. |
| La mida de ArrayList s'incrementa fins a un 50% de la mida actual de la matriu si el nombre d'elements supera la seva capacitat. | La mida de ArrayList s'incrementa fins al 100% de la mida actual de la matriu si el nombre d'elements supera la seva capacitat. |
| ArrayList és ràpid perquè no està sincronitzat. | El vector és més lent perquè està sincronitzat. |
| La interfície iteradora s'utilitza per recórrer els elements | Es pot utilitzar una interfície iteradora o enumeració per recórrer el vector. |
Per a més informació, consulteu l'article - Vector vs ArrayList a Java
20. Diferenciar entre Iterator i ListIterator.
| Iterador | ListIterator |
|---|---|
| Pot travessar els elements presents a la Col·lecció només en direcció cap endavant. | Pot recórrer els elements presents a la col·lecció tant en direccions cap endavant com cap enrere. |
| Ajuda a recórrer el mapa, la llista i el conjunt. | Només es pot recórrer List i no els altres dos. |
| No es poden obtenir índexs utilitzant Iterator. | Té mètodes com nextIndex() i previousIndex() per obtenir índexs d'elements en qualsevol moment mentre travessa la llista. |
| No es poden modificar ni substituir els elements presents a la Col·lecció | Podem modificar o substituir elements amb l'ajuda del conjunt (E e) |
Per a més informació, consulteu l'article - Diferència entre un Iterador i un ListIterator
21. Quina diferència hi ha entre un iterador i una enumeració?
Iterador: És un iterador universal, ja que el podem aplicar a qualsevol objecte Col·lecció. Mitjançant un iterador, podem realitzar tant operacions de lectura com d'eliminació.
Sintaxi:
// Here 'c' is any Collection object. itr is of // type Iterator interface and refers to 'c' Iterator itr = c.iterator();>
Enumeració: L'enumeració (o enumeració) és un tipus de dades definit per l'usuari. S'utilitza principalment per assignar noms a constants integrals, els noms fan que un programa sigui fàcil de llegir i mantenir.
Sintaxi:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }> | Iterador | Enumeració |
|---|---|
| L'iterador és un cursor universal, ja que és aplicable a totes les classes de col·lecció. | L'enumeració no és un cursor universal, ja que només s'aplica a les classes heretades. |
| L'iterador té el mètode remove(). | L'enumeració no té el mètode remove(). |
| L'iterador pot fer modificacions (per exemple, utilitzant el mètode remove() que elimina l'element de la Col·lecció durant el recorregut). | La interfície d'enumeració actua com una interfície de només lectura, no es pot fer cap modificació a la Col·lecció mentre travessa els elements de la Col·lecció. |
| Iterator no és una interfície heretada. L'iterador es pot utilitzar per a la travessa de HashMap, LinkedList, ArrayList, HashSet, TreeMap i TreeSet. | L'enumeració és una interfície heretada que s'utilitza per recórrer Vector i Hashtable. |
Per a més informació, consulteu l'article - Diferència entre iterador i enumeració
22. Quines són les característiques de Java Hashmap?
HashMap és similar a HashTable, però no està sincronitzat. També ens permet emmagatzemar les claus nul·les, però només hi hauria d'haver un objecte de clau nul·la i pot haver-hi qualsevol nombre de valors nuls. Aquesta classe no garanteix l'ordre del mapa. Per utilitzar aquesta classe i els seus mètodes, cal importar java.util. HashMap paquet o la seva superclasse.

HashMap a Java
Sintaxi:
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable>
Paràmetres: Pren dos paràmetres, a saber, el següent:
- El tipus de claus que manté aquest mapa (K)
- El tipus de valors assignats (V)
Per a més informació, consulteu l'article - HashMap a Java amb exemples
23. Què són les interfícies de col·lecció?
El Col · lecció La interfície és membre del Java Collections Framework. És una part de java.util paquet. És una de les interfícies arrel de la jerarquia de col·leccions. La interfície Col·lecció no està implementada directament per cap classe. Tanmateix, s'implementa indirectament mitjançant els seus subtipus o subinterfícies com ara Llista, Cua i Conjunt.
Per exemple, la classe HashSet implementa la interfície Set que és una subinterfície de la interfície Col·lecció. Si una implementació de col·lecció no implementa una operació concreta, hauria de definir el mètode corresponent per llançar UnsupportedOperationException.
La jerarquia de la col·lecció:

Interfície de col·lecció en Java
24. Expliqueu la interfície de llista.

Interfície de classe en Java
A Java, la interfície de llista permet a l'usuari emmagatzemar una col·lecció ordenada d'objectes. La llista és la interfície secundària de Collection. A Col·lecció, una llista és una col·lecció ordenada d'objectes que poden tenir valors duplicats. Com que List conserva l'ordre d'inserció, permet l'accés i la inserció posicionals, que també permeten valors duplicats.
Sintaxi:
public interface List extends Collection ;>
Aquesta interfície de llista està implementada per diverses classes com ArrayList, Vector, Stack, etc. Com que totes les subclasses implementen la llista, podem crear una instancia d'un objecte llista amb qualsevol d'aquestes classes.
Exemple:
execvp
List al = new ArrayList ();
Llista ll = new LinkedList ();
Llista v = vector nou ();On T és el tipus d'objecte

Llista de matrius en Java
Les classes que implementen la interfície List són les següents:
- ArrayList
- LinkedList
- Vector
- Pila
25. Escriu un programa per convertir una matriu determinada en una col·lecció amb el mètode asList().
Per convertir dades basades en matrius en dades basades en la col·lecció que podem utilitzar java.util.Arrays classe. Aquesta classe proporciona un mètode estàtic asList(T... a) que converteix la matriu en una col·lecció.
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);> >}> }> |
>
>Sortida
Array input: [Kamlesh, Abhay, Abhishek, Shivansh] Converted elements: [Kamlesh, Abhay, Abhishek, Shivansh]>
26. Diferenciar entre HashSet i HashMap
| HashSet | HashMap |
|---|---|
| HashSet implementa la interfície Set | HashMap implementa la interfície Map |
| No es permeten duplicats | Sí, es permeten valors duplicats, però no es permet cap clau duplicada |
| Els valors simulats es permeten a HashSet. | No es permet cap valor simulat a HashMap. |
| Es requereix un únic objecte durant una operació d'addició | 2 Es requereixen objectes durant una operació d'afegit |
| La velocitat és comparativament més lenta que HashMap | La velocitat és comparativament més ràpida que HashSet perquè aquí s'ha utilitzat la tècnica de hash. |
| Tenir un sol valor nul | Clau nul·la única i qualsevol nombre de valors nuls |
| Per a la inserció s'utilitza el mètode Add(). | El mètode put () s'utilitza per a la inserció. |
Per a més informació, consulteu l'article - Diferència entre HashMap i HashSet
27. Diferenciar entre HashSet i HashTable.
| HashSet | HashTable |
|---|---|
| HashSet permet elements NULL | HashTable no permet elements NULL. |
| No es garanteix que els objectes que inseriu a HashSet s'insereixin en el mateix ordre. Els objectes s'insereixen en funció del seu codi hash. LinkedHashSet es pot utilitzar per mantenir l'ordre. | HashTable no manté l'ordre d'inserció. |
| HashSet no està sincronitzat, però es pot sincronitzar externament. | HashTable està sincronitzat. |
| El mètode add() s'utilitza per inserir a HashSet | El mètode put() s'utilitza per inserir a HashTable |
28. Quina és la mida predeterminada del factor de càrrega a la col·lecció basada en hashing?
A mesura que augmenta el factor de càrrega, la capacitat augmenta de manera que la complexitat operativa del HashMap segueix sent O(1) si la relació de l'element actual a la capacitat inicial creua el llindar. El significat de complexitat operativa d'O(1) significa que les operacions de recuperació i inserció triguen un temps constant. La mida del factor de càrrega per defecte és 0.75 . La capacitat per defecte es calcula multiplicant la capacitat inicial pel factor de càrrega.
Per a més informació, consulteu l'article - Factor de càrrega a HashMap a Java amb exemples
Preguntes d'entrevista de la col·lecció Java per a persones amb experiència
29. Quina diferència hi ha entre Comparable i Comparator a Java?
Java proporciona dues interfícies per ordenar objectes utilitzant els membres de dades de la classe:
- Comparable
- Comparador
| Comparable | Comparador |
|---|---|
| La interfície Comparable proporciona una única seqüència d'ordenació. | La interfície Comparator proporciona múltiples seqüències d'ordenació. |
| La classe real es modifica mitjançant una interfície comparable | La interfície del comparador no modifica la classe real. |
| El mètode compareTo() s'utilitza per ordenar elements. | El mètode compare() s'utilitza per ordenar elements. |
| El comparable està present al paquet java.lang | El comparador està present al paquet java.util |
Per a més informació, consulteu l'article - Comparable vs Comparador a Java
30. Quina diferència hi ha entre fall-fast i fail-safe?
Els iteradors a Java s'utilitzen per iterar sobre els objectes de la col·lecció. Els iteradors Fail-Fast llancen immediatament ConcurrentModificationException si hi ha un modificació estructural de la col·lecció. La modificació estructural significa afegir o eliminar qualsevol element d'una col·lecció mentre un fil itera sobre aquesta col·lecció. Iterator a les classes ArrayList i HashMap són alguns exemples d'iterador ràpid de falla.
| Falla-Ràpid | A prova de fallades |
|---|---|
| ConcurrentModificationException es llança mentre es modifica l'objecte durant el procés d'iteració. | No es llança cap excepció |
| Fail-Fast necessita menys memòria durant el procés. | L'iterador Fail-Safe requereix més memòria durant el procés. |
| No es crea un objecte clon durant el procés d'iteració. | Es crea un objecte clon o una còpia durant el procés d'iteració. |
| Fail-Fast no permet modificacions durant el procés d'iteració. | Fail-Safe permet la modificació durant el procés d'iteració. |
| Fail-Fast és ràpid, | Fail-Safe és una mica més lent que falla ràpid. |
| Exemples: ArrayList, Vector, HashMap, HashSet, etc. | Exemples: ConcurrentHashMap, CopyOnWriteArrayList, etc. |
Per a més informació, consulteu l'article - Iteradors Fail Fast i Fail Safe a Java
31. Escriu un programa per iterar la llista utilitzant l'expressió lambda.
La iteració es pot fer utilitzant a expressió lambda.
Sintaxi:
list_name.forEach(variable->{//bloc de codi})>>> 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); });>>> }> |
>Sortida
Geeks for Geeks>
Per a més informació, consulteu l'article - Iterar a través de la llista en Java
32. Què és IdentityHashMap?
L'IdentityHashMap implementa la interfície del mapa mitjançant Hashtable, comparant claus (i valors) mitjançant la igualtat de referència en lloc de la igualtat d'objectes. Aquesta classe implementa la interfície de Map, però trenca intencionadament el contracte general de Map, que exigeix que els objectes es comparen mitjançant el mètode equals(). Aquesta classe s'utilitza quan l'usuari permet comparar objectes mitjançant referències. Pertany al paquet java.util.
Per a més informació, consulteu l'article - Classe IdentityHashMap a Java
33. Escriu un programa en Java per mostrar el contingut d'una Taula Hash mitjançant l'enumeració.
La classe hashtable implementa una taula hash, que mapeja claus amb valors. Qualsevol objecte no nul es pot utilitzar com a clau o com a valor. Per emmagatzemar i recuperar objectes d'una taula hash amb èxit, els objectes utilitzats com a claus han d'implementar el mètode hashCode i el mètode equals. A continuació es mostra el programa per mostrar el contingut d'una Taula Hash mitjançant l'enumeració:
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());> >}> >}> }> |
>
>Sortida
Geeks for Geeks>
34. Escriu un programa en java per obtenir la vista de col·lecció dels valors presents en un HashMap.
La classe HashMap de Java té el mètode java.util.HashMap.values() per crear col·leccions a partir dels valors HashMap. Bàsicament retorna una vista de col·lecció dels valors de HashMap.
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());> >}> }> |
>
>Sortida
Initial Mappings are: {0=Welcome, 1=to, 2=Geeks, 3=4, 4=Geeks} The collection is: [Welcome, to, Geeks, 4, Geeks]> Per a més informació, consulteu l'article - HashMap values() Mètode en Java
35. Escriu un programa per unir dues ArrayList en una sola ArrayList.
Tenint en compte dues ArrayLists a Java, la nostra tasca és unir-nos a aquestes ArrayLists.
Java
model tcp ip
// 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);> >}> }> |
>
>Sortida
ArrayList 1: [Geeks, For, ForGeeks] ArrayList 2: [GeeksForGeeks, A computer portal] Joined ArrayLists: [Geeks, For, ForGeeks, GeeksForGeeks, A computer portal]>
Per a més informació, consulteu l'article - Uniu dues ArrayLists a Java
36. Com es pot sincronitzar una ArrayList a Java?
Mitjançant el mètode Collections.synchronizedList(), podem sincronitzar les nostres col·leccions en Java. SynchronizedList() retorna una llista sincronitzada (sense fils) recolzada per una selecció.
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());> >}> >}> >}> }> |
>
>Sortida
Eat Coffee Code Sleep Repeat>
37. Què és una classe de propietats a Java?
La classe de propietats és una subclasse de Hashtable. La classe de propietats emmagatzema una llista de valors la clau dels quals és una cadena i el valor dels quals també és una cadena. Les propietats poden definir altres llistes de classes de propietats, però el valor per defecte són propietats.
Característiques de la classe de propietats:
- La propietat és una subclasse de Hashtable.
- El fitxer de propietats s'utilitza per emmagatzemar i recuperar el tipus de dades de cadena per a una llista de valors on la clau és una cadena i el valor també és una cadena.
- Si la llista de propietats original no conté una propietat clau determinada, es cercarà la llista de propietats predeterminada.
- Els objectes es poden compartir per diversos fils sense sincronització externa.
- La classe de propietats es pot utilitzar per recuperar les propietats del sistema.
Per a més informació, consulteu l'article - Classe de propietats en Java
38. Què passarà si utilitzeu HashMap en una aplicació Java multiprocés?
En un entorn de diversos fils, si diversos fils alteren estructuralment el mapa, com ara afegir, eliminar o modificar mapes, l'estructura de dades interna de HashMap pot estar malmesa i pot haver-hi alguns enllaços que falten, entrades incorrectes i el mapa en si. esdevenir completament inútil. Per tant, no hauríeu d'utilitzar HashMap en una aplicació concurrent; en comptes d'això, utilitzeu ConcurrentHashMap o Hashtable, que és segur per a fils. El ConcurrentHashMap inclou tots els mètodes de Hashtable, així com la concurrència total de recuperacions i actualitzacions.
Com es va convertir ThreadSafeConcurrentHashMap en thread-safe?
- La classe java.util.Concurrent.ConcurrentHashMap proporciona seguretat al fil dividint el mapa en segments, la qual cosa permet que el bloqueig només es faci una vegada per segment, és a dir, una vegada per cada fil.
- L'operació de lectura a ConcurrentHashMap no requereix un bloqueig.
Per a més informació, consulteu l'article - Com aconsegueix ConcurrentHashMap la seguretat dels fils a Java?
39. Què passarà si dues claus diferents de HashMap retornen el mateix codi hash()?
Quan dues claus diferents de HashMap retornen el mateix codi hash, acabaran al mateix cub; per tant, es produiran xocs. En cas de col·lisió, és a dir, l'índex de dos o més nodes és el mateix, els nodes s'uneixen mitjançant una llista d'enllaços, és a dir, el primer node fa referència al segon node i el segon al tercer, i així successivament.
Per a més informació, consulteu l'article - Funcionament intern de HashMap a Java
40. Què és WeakHashMap?
WeakHashMap implementa la interfície Map. A diferència de HashMap, WeakHashMap permet la recollida d'escombraries encara que l'objecte especificat com a clau no conté cap referència tot i estar associat amb WeakHashMap. En altres paraules, Garbage Collector és millor que WeakHashMap.
Per a més informació, consulteu l'article - Hashmap vs WeakHashMap a Java
41. Què és UnsupportedOperationException?
En el context de les API o les implementacions de llistes, la UnsupportedOperationException és una excepció comuna. L'excepció es llança quan l'operació sol·licitada no es pot realitzar. Aquesta classe és membre del Java Collections Framework.
Sintaxi:
public class UnsupportedOperationException extends RuntimeException>
Per a més informació, consulteu l'article - UnsupportedOperationException
42. Com fer una col·lecció de només lectura a Java?
La creació d'una col·lecció de només lectura implica restringir l'objecte només a obtenir les dades i no afegir o eliminar dades. Java té diferents mètodes per a diferents tipus de col·lecció com unmodiableCollection(), unmodifiableMap(), ununmodifiableSet(), etc. java.util.La classe de col·leccions defineix tots els mètodes. El mètode unmodifiableCollection() crea una col·lecció de només lectura. Requereix una referència a la classe Col·lecció. Si tenim un objecte de Set Interface, podem utilitzar unmodifiableSet() per fer de Només lectura.
Per a més informació, consulteu l'article - Com fer una col·lecció de només lectura a Java?
43. Diferència entre PriorityQueue i TreeSet a Java?
| PriorityQueue | Conjunt d'arbres |
|---|---|
| PriorityQueue ve al JDK 1.5. | TreeSet ve al JDK 1.4. |
| L'estructura de dades utilitzada per PriorityQueue és Queue | L'estructura de dades utilitzada per TreeSet és Set. |
| Es permeten elements duplicats. | No es permeten elements duplicats. |
| Excepte l'element arrel, la resta d'elements no segueixen cap ordre particular a PriorityQueue. | A TreeSet tots els elements romanen en l'ordre ordenat. |
| Amb PriorityQueue, podem recuperar l'element més gran o més petit en el temps O(1). | TreeSet no proporciona una manera de recuperar l'element més gran o més petit en el temps O(1), però com que estan ordenats, obté el primer o l'últim element en el temps O(1). |
Per a més informació, consulteu l'article - Diferència entre PriorityQueue i TreeSet
44. Què és l'operador de diamant a Java?
Els operadors de diamant s'utilitzen per simplificar l'ús de genèrics a l'hora de crear objectes alhora que s'eviten els avisos no marcats en un programa. Quan es va introduir l'operador Diamond a Java 7, podem crear l'objecte sense esmentar el tipus genèric a la part dreta de l'expressió, tal com es mostra a continuació.
Sintaxi:
List list = new ArrayList();>
Per a més informació, consulteu l'article - Operador de diamants
45. Com funciona TreeMap a Java?
TreeMap emmagatzema els parells clau-valor, però TreeMap ordena les claus ascendent en lloc de descendent com HashMap. Segons quin constructor s'utilitzi, TreeMap s'ordenarà segons les seves claus o mitjançant un comparador. A TreeMap, els elements s'ordenen en funció d'un arbre vermell-negre. Un arbre vermell-negre és un arbre de cerca binari d'autoequilibri on cada node té un bit addicional, i aquest bit sovint s'interpreta com el color (vermell o negre). Aquests colors s'utilitzen per garantir que l'arbre es mantingui equilibrat durant les insercions i eliminacions.

Estructura d'un node en Java
Per a més informació, consulteu l'article - Funcionament intern de TreeMap a Java
46. Llista les maneres d'iterar sobre Map en java?
La classe HashMap proporciona la interfície de mapa de Java emmagatzemant dades en parells (clau, valor) i accedint-hi mitjançant un índex d'un altre tipus. Per utilitzar aquesta classe cal importar java.util.HashMap paquet o la seva superclasse.
Hi ha nombroses maneres d'iterar sobre HashMap de les quals s'enumeren 5 a continuació:
- Itereu a través d'un HashMap EntrySet mitjançant iteradors.
- Itereu a través de HashMap KeySet mitjançant Iterator.
- Itereu HashMap utilitzant for-each bucle.
- Iteració a través d'un HashMap utilitzant expressions Lambda.
- Recorre un HashMap mitjançant l'API Stream.
Per a més informació, consulteu l'article - Com iterar HashMap a Java
47. Què és CopyOnWriteArrayList a Java?

CopyOnWriteArrayList a Java
JDK 1.5 va introduir una versió millorada de ArrayList anomenada CopyOnWriteArrayList, on totes les modificacions (afegir, establir, eliminar, etc.) s'implementen mitjançant una còpia nova. Es pot trobar a java.util.concurrent. És una estructura de dades creada per ser utilitzada en un entorn concurrent. En un entorn basat en Thread, el CopyOnWriteArrayList està pensat per a una lectura freqüent i una actualització poc freqüent. CopyOnWriteArrayList és una versió segura per a fils de ArrayList.
Per a més informació, consulteu l'article - CopyOnWriteArrayList a Java
48. Què és EnumMap a Java?
EnumMap és una implementació de la interfície Map específica dels tipus d'enumeració. La classe EnumMap és membre del Java Collections Framework i no està sincronitzada. Amplia AbstractMap i implementa la interfície Map en java. EnumMap pertany al paquet java.util.
Sintaxi:
classe pública EnumMap
amplia AbstractMap implementa Serialitzable, Clonable // K ha d'estendre Enum, la qual cosa fa complir el requisit que les claus han de ser del tipus d'enum especificat.
Paràmetres:
- Tipus d'objecte clau
- Tipus d'objecte de valor

EnumMap a Java
Per a més informació, consulteu l'article - Classe EnumMap a Java
49. Com funciona internament Hashmap?
HashMap funciona segons el principi de Hashing. HashMap conté una matriu de Node i Node pot representar una classe que tingui els objectes següents:
- int hash
- Tecla K
- valor V
- Node següent
El funcionament intern de HashMap:
- Hashing
- Cubells
- Càlcul d'índex en Hashmap
Per a més informació, consulteu l'article - Funcionament intern de HashMap a Java
50. Per què l'iterador en hashmap es considera que no és ràpid?
Els iteradors amb errors ràpids llançaran immediatament excepcions de modificació simultània si algun fil de fora intenta modificar la col·lecció en què estan iterant. La funció d'error ràpid assegura que l'iterador falla immediatament si detecta que qualsevol modificació de la col·lecció comportarà un comportament anòmal en el futur.
Falla ràpid La característica garanteix que si l'iterador considera que la modificació de la col·lecció donaria lloc a un comportament anòmal en qualsevol moment del futur, fallarà immediatament.
Exemple:
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>);> >}> >}> >}> }> |
>
>
Sortida:
[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)>
Conclusió
Col·leccions Java És important entendre per als desenvolupadors o programadors de Java perquè Java s'utilitza àmpliament en diverses indústries. És important que els desenvolupadors tinguin una comprensió sòlida dels conceptes bàsics de les col·leccions Java. Java és un dels llenguatges més utilitzats a les principals empreses com ara Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazon , etc. Per accedir a aquestes empreses o a qualsevol altra empresa informàtica, heu de dominar aquestes preguntes d'entrevista de les col·leccions de Java que es fan principalment per tal de resoldre la seva avaluació en línia i l'entrevista tècnica basada en Java.
Si voleu practicar preguntes de codificació, el Programes de col·lecció JAVA pot ser un recurs útil.
Preguntes d'entrevista de col·leccions de Java - Preguntes freqüents
1. Què són les col·leccions a les preguntes d'entrevista de Java?
La col·lecció en Java és un marc utilitzat per emmagatzemar i manipular col·leccions d'objectes.
2. Quines són les 4 classes de col·lecció a Java?
Hi ha moltes col·leccions a Java, però d'elles les més utilitzades són:
- ArrayList
- LinkedList
- HashSet
- Pila
3. HashMap pot tenir claus duplicades?
No, HashMap no pot tenir claus duplicades. Com que HashMap és una de les col·leccions de Java, emmagatzema el valor en forma de valor-clau i cada clau té el seu propi valor associat. Per tant, com que cap clau pot tenir dos valors significa que no podem tenir claus duplicades a HashMap.
4. Per què array no és una col·lecció?
La matriu no és una col·lecció, tot és a causa de la diferència en la funcionalitat entre col·leccions i matrius, algunes de les quals s'esmenten a continuació:
- La mida de la matriu no es pot canviar un cop declarada
- Les matrius només poden contenir elements de tipus de dades homogenis.
- La matriu pot contenir tant tipus de dades primitius com objectes, mentre que a les col·leccions només pot contenir objectes d'embolcall.