Preguntes i respostes de l'entrevista de les col·leccions de Java
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.
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:
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); });>>> |