logo

Preguntas y respuestas de la entrevista sobre colecciones de Java

Marco de colección de Java fue introducido en JDK 1.2 que contiene todas las clases e interfaces de la colección. Colección Java es un marco que proporciona un mecanismo para almacenar y manipular la colección de objetos. Permite a los desarrolladores acceder a estructuras de datos y algoritmos preempaquetados para manipular datos.

En este artículo, hemos cubierto los 50 principales. Preguntas de la entrevista sobre colecciones de Java y respuestas que cubren todo, desde conceptos básicos hasta avanzados de colección de Java, como colección de navegación, WeakHashMap, transmisiones Lambdas, etc. Si usted es un novato o un desarrollador Java experimentado , estas preguntas de la entrevista de las colecciones de Java le brindan toda la confianza que necesita para triunfar en su próxima entrevista de Java.



Preguntas de la entrevista sobre colecciones de Java

Preguntas de la entrevista sobre colecciones de Java

Hemos dividido las 50 preguntas en dos partes: Experimentados y Novatos. Comencemos con las preguntas para los estudiantes de primer año.

Tabla de contenidos



Preguntas de la entrevista de la colección Java para principiantes

1. ¿Qué es la colección en Java?

El término recopilación Se refiere a un grupo de objetos representados como una unidad. Las clases en la jerarquía de clases de la colección Java se dividen en dos raíz interfaces: Colección (java.util.Colección) y mapa (java.util.Map) . Términos que encontrará mientras aprende sobre la colección en Java:

  • Marco de colección: El Collection Framework de Java define clases e interfaces para representar grupos de objetos como una sola entidad. Los desarrolladores de C++ pueden comparar el marco de la Colección con STL (Biblioteca de plantillas estándar) y Container Framework con Collection Framework si provienen de C++.
  • Interfaz de colección: La interfaz de una clase especifica qué debe hacer, no cómo. En otras palabras, es el modelo de la clase. Esta interfaz proporciona los métodos más comunes para todos los objetos de colección que forman parte de Collection Framework. Alternativamente, representa el objeto individual como un todo.
  • Clase de colecciones: Miembro de Collection Framework, es parte del paquete java.util. El objeto de colección cuenta con muchos métodos de utilidad en esta clase.

2. ¿Qué es un Framework en Java?

Los marcos son conjuntos de clases y interfaces que proporcionan una arquitectura lista para usar. No es necesario definir un marco para implementar nuevas características o clases. Como resultado, un diseño óptimo orientado a objetos incluye un marco que contiene una colección de clases que realizan tareas similares. El marco se puede utilizar de diversas formas, como llamando a sus métodos, extendiéndolo y proporcionando devoluciones de llamadas, oyentes y otras implementaciones. Algunos de los marcos populares en Java son:

  • Primavera
  • Hibernar
  • puntales
  • Kit de herramientas web de Google (GWT)
  • Caras del servidor Java (JSF)

3. ¿Cuál es la diferencia entre matriz y colección en Java?

Las matrices son una colección de variables de tipos similares con un nombre común en Java. Existen algunas diferencias entre las matrices en Java y C/C++. Por otro lado, las Colecciones son grupos de objetos individuales que forman una única entidad conocida como colección de objetos.



matrices

Recopilación

Las matrices tienen un tamaño fijo, es decir, una vez que creamos una matriz, no podemos aumentarla ni disminuirla según nuestros requisitos. La colección se puede cultivar por naturaleza y se basa en nuestras necesidades. Podemos aumentar o disminuir de tamaño.
Con respecto a la memoria, no se recomienda el uso de matrices. Con respecto a la memoria, se recomienda el uso de colecciones.
Con respecto al rendimiento, se recomienda el uso de matrices. Con respecto al rendimiento, no se recomienda el uso de colecciones.
Las matrices solo pueden contener elementos de tipos de datos homogéneos. La colección puede contener elementos tanto homogéneos como heterogéneos.

Para obtener más información, consulte el artículo: Diferencia entre matrices y colecciones en Java

4. ¿Cuáles son las distintas interfaces utilizadas en Java Collections Framework?

La colección se conoce como la raíz de la jerarquía de colecciones. Las colecciones representan grupos de objetos conocidos como elementos. La plataforma Java no proporciona ninguna implementación directa de esta interfaz, pero la interfaz Collection está siendo implementada por las clases List y Set.

  • Interfaz de colección
  • Interfaz de lista
  • Establecer interfaz
  • interfaz de cola
  • Interfaz de salida de cola
  • Interfaz de mapa

5. Explique la jerarquía del marco de la Colección en Java.

Todas las clases e interfaces requeridas por el marco de la colección están contenidas en el paquete de utilidades (java. util). Los marcos de colección tienen una interfaz llamada interfaz iterable, que permite al iterador iterar sobre todas las colecciones. Además de esta interfaz, la interfaz de colección principal actúa como raíz para el marco de la colección. Todas las colecciones amplían esta interfaz de colección, ampliando así las propiedades del iterador y los métodos de esta interfaz. La siguiente figura ilustra la jerarquía del marco de recopilación.

Jerarquía de la colección Java

6. ¿Cuáles son las ventajas del Framework de recopilación?

Ventajas del marco de colección: Dado que la falta de un marco de recopilación dio lugar al conjunto de desventajas anterior, las siguientes son las ventajas del marco de recopilación.

  • API consistente: La API tiene un conjunto básico de interfaces como Recopilación , Colocar , Lista , o Mapa , todas las clases (ArrayList, LinkedList, Vector, etc) que implementan estas interfaces tienen alguno conjunto común de métodos.
  • Reduce el esfuerzo de programación: Un programador no tiene que preocuparse por el diseño de la Colección sino que puede centrarse en su mejor uso en su programa. Por lo tanto, el concepto básico de programación orientada a objetos (es decir, abstracción) se ha implementado con éxito.
  • Aumenta la velocidad y la calidad del programa: Aumenta el rendimiento al proporcionar implementaciones de alto rendimiento de estructuras de datos y algoritmos útiles porque, en este caso, el programador no necesita pensar en la mejor implementación de una estructura de datos específica. Simplemente puede utilizar la mejor implementación para aumentar drásticamente el rendimiento de su algoritmo/programa.

7. ¿Qué es ArrayList en Java?

ArrayList es parte del marco de la colección Java y es una clase del paquete java.util. Nos proporciona matrices dinámicas en Java. Las principales ventajas de ArrayList son que, si declaramos una matriz, entonces es necesario mencionar el tamaño, pero en ArrayList no es necesario mencionar el tamaño de ArrayList, si desea mencionar el tamaño, puede hacerlo.

Lista de arreglo

Imagen de la lista de matrices

Para obtener más información, consulte el artículo: Lista de matrices en Java

8. ¿Cuál es la diferencia entre Colección y Colecciones?

Recopilación Colecciones
Es una interfaz. Es una clase de utilidad.
Se utiliza para representar un grupo de objetos individuales como una sola unidad. Define varios métodos de utilidad que se utilizan para operar en la recolección.
La Colección es una interfaz que contiene un método estático desde java8. La interfaz también puede contener métodos abstractos y predeterminados. Contiene sólo métodos estáticos.

Para obtener más información, consulte el artículo: Colección frente a colecciones en Java con ejemplo

9. ¿Diferencia entre ArrayList y LinkedList en el marco de colección de Java?

ArrayList frente a lista enlazada

Lista de matrices y lista vinculada

Lista de arreglo

Lista enlazada

Esta clase utiliza una matriz dinámica para almacenar los elementos que contiene. Con la introducción de los genéricos, esta clase admite el almacenamiento de todo tipo de objetos. Esta clase utiliza una lista doblemente enlazada para almacenar los elementos que contiene. Similar a ArrayList, esta clase también admite el almacenamiento de todo tipo de objetos.
Manipular ArrayList lleva más tiempo debido a la implementación interna. Cada vez que eliminamos un elemento, internamente, se atraviesa la matriz y se desplazan los bits de memoria. Manipular LinkedList lleva menos tiempo en comparación con ArrayList porque, en una lista doblemente enlazada, no existe el concepto de desplazar los bits de memoria. Se recorre la lista y se cambia el enlace de referencia.
Esta clase implementa una interfaz Lista. Por tanto, esto actúa como una lista. Esta clase implementa tanto la interfaz List como la interfaz Deque. Por tanto, puede actuar como lista y deque.
Esta clase funciona mejor cuando la aplicación exige almacenar los datos y acceder a ellos. Esta clase funciona mejor cuando la aplicación exige manipulación de los datos almacenados.

Para obtener más información, consulte el artículo: ArrayList frente a LinkedList en Java

10. ¿Qué es un iterador?

Marco de colección de Java utiliza iteradores para recuperar elementos uno por uno. Este iterador es universal ya que se puede utilizar con cualquier tipo de objeto de Colección. Usando Iterator, podemos realizar operaciones de lectura y eliminación. Esta es una versión mejorada de Enumeración con la adición de elementos de eliminación.

Al enumerar elementos en todas las interfaces implementadas del marco de la Colección, como Colocar , Lista , Cola , Deque y todas las clases implementadas de Map, se debe utilizar un iterador. El único cursor disponible para todo el marco de la colección es el iterador. Usando el método iterador() en la interfaz Colección, puede crear un objeto iterador.

Sintaxis:

Iterator itr = c.  iterator  ();>

Nota: Aquí c es cualquier objeto de Colección. itr es de tipo interfaz Iterator y se refiere a c.

Para obtener más información, consulte el artículo: Iteradores en Java

11. ¿Cuál es la diferencia entre un iterador y una enumeración?

Una diferencia importante entre iterador y enumeración es que los iteradores tienen un método remove() mientras que las enumeraciones no. Por lo tanto, usando Iterator podemos manipular objetos agregándolos y eliminándolos de colecciones. Dado que la enumeración sólo puede atravesar objetos y recuperarlos, se comporta como una interfaz de sólo lectura.

Para obtener más información, consulte el artículo: Diferencia entre iterador y enumeración

12. ¿Cuál es la diferencia entre Lista y Conjunto en Java?

Una diferencia importante entre una Lista y un Conjunto es que una Lista puede contener elementos duplicados, mientras que un conjunto contiene sólo elementos únicos. La lista está Ordenada y mantiene el orden del objeto al que se agregan. El conjunto está desordenado.

Lista

Colocar

La Lista es una secuencia indexada. El Conjunto es una secuencia no indexada.
La lista permite elementos duplicados. El conjunto no permite elementos duplicados.
Se puede acceder a los elementos por su posición. No se permite el acceso de posición a los elementos.
Se pueden almacenar varios elementos nulos. Los elementos nulos solo se pueden almacenar una vez.
Las implementaciones de lista son ArrayList, LinkedList, Vector, Stack Las implementaciones de conjuntos son HashSet, LinkedHashSet.

Para obtener más información, consulte el artículo: Diferencia entre lista y conjunto en Java

13. ¿Cuáles son las mejores prácticas para Java Collections Framework?

A continuación se detallan algunas de las mejores prácticas al utilizar colecciones de Java:

  • Los programas deben escribirse como interfaces, no como implementaciones, para que podamos modificar la implementación más adelante.
  • Siempre que sea posible, utilice genéricos para garantizar la seguridad de tipos y evitar ClassCastExceptions.
  • Elegir el tipo de recogida adecuado en función de la necesidad. Por ejemplo, si el tamaño es fijo, es posible que deseemos utilizar un Array en lugar de un ArrayList. Al iterar sobre el mapa, debemos usar LinkedHashMap. Set es la mejor manera de evitar duplicados.
  • Utilice clases inmutables proporcionadas por JDK como claves en Map para evitar la implementación de hashCode() y equals().
  • Para aumentar la legibilidad del código, deberíamos usar isEmpty() en lugar de encontrar el tamaño de la colección y compararlo con cero.
  • En lugar de escribir su propia implementación, utilice la clase de utilidad Colecciones para obtener colecciones de solo lectura, sincronizadas o vacías. Mejora la reutilización del código y al mismo tiempo genera una mayor estabilidad.

14. ¿Qué es una cola prioritaria en Java?

PriorityQueues se utilizan para procesar objetos según su prioridad. Las colas siguen el algoritmo primero en entrar, primero en salir, pero a veces los elementos de la cola deben procesarse según su prioridad, que es donde entra en juego PriorityQueue. Las colas de prioridad se basan en montones de prioridad.

Los elementos de la cola de prioridad se ordenan según el orden natural o mediante un comparador proporcionado en el momento de la construcción de la cola, según el constructor que se utilice.

Colas prioritarias en Java

Colas prioritarias en Java

Declaración:

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

La clase implementa interfaces Serializable, Iterable, Collection y Queue.

15. ¿Cuál es la diferencia entre Lista, conjunto y mapa en Java?

Lista

Colocar

Mapa

La interfaz de lista permite elementos duplicados.

El conjunto no permite elementos duplicados.

El mapa no permite elementos duplicados.

La lista mantiene el orden de inserción.

El conjunto no mantiene ningún orden de inserción.

El mapa tampoco mantiene ningún orden de inserción.

Podemos agregar cualquier número de valores nulos.

Pero en el conjunto casi solo hay un valor nulo.

El mapa permite una única clave nula como máximo y cualquier número de valores nulos.

Las clases de implementación de la lista son Array List y LinkedList.

Las clases de implementación de conjuntos son HashSet, LinkedHashSet y TreeSet.

Las clases de implementación de mapas son HashMap, HashTable, TreeMap, ConcurrentHashMap y LinkedHashMap.

Para obtener más información, consulte el artículo: Diferencia entre lista, conjunto y mapa en Java

16. ¿Cuál es la diferencia entre cola y pila?

Pila

Cola

Stacks funciona según el principio LIFO, lo que significa que el elemento insertado en último lugar será el primer elemento que se eliminará. Las colas funcionan según el principio FIFO, lo que significa que el elemento insertado primero será el primer elemento que se eliminará.
En las pilas, la inserción y eliminación se realizan únicamente desde arriba. En las colas, la inserción se produce al final de la lista y la eliminación se realiza desde el principio de la lista.
La operación de inserción se llama operación de inserción. La operación de inserción se llama operación de puesta en cola.
La operación de eliminación se llama operación pop. La operación de eliminación se llama operación de eliminación de la cola.
La parte superior de una pila siempre apunta al último elemento de la lista, que es el único puntero utilizado para acceder a la lista. Se mantienen dos punteros para acceder a las colas. El puntero frontal apunta al primer elemento insertado y el puntero posterior apunta al último elemento insertado.

17. ¿Qué es BlockingQueue en Java?

La interfaz BlockingQueue en Java se agrega en Java 1.5 junto con otras clases de utilidades concurrentes como ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList, etc. La interfaz BlockingQueue admite el control de flujo (además de la cola) al introducir el bloqueo si BlockingQueue está lleno o vacío.

Un subproceso que intenta poner en cola un elemento en una cola llena se bloquea hasta que otro subproceso haga espacio en la cola, ya sea quitando uno o más elementos de la cola o limpiando la cola por completo. De manera similar, bloquea un hilo que intenta eliminar de una cola vacía hasta que otros hilos insertan un elemento. BlockingQueue no acepta un valor nulo. Si intentamos poner en cola el elemento nulo, arroja NullPointerException.

lista de matrices ordenada

Uso de BlockingQueue

Cola de bloqueo en Java

Cola de bloqueo en Java

La jerarquía de BlockingQueue

Jerarquía de cola de bloqueo en Java

Jerarquía de cola de bloqueo en Java

Declaración:

public interface BlockingQueue extends Queue>

Aquí, Y es el tipo de elementos almacenados en la Colección.

Para obtener más información, consulte el artículo: Interfaz BlockingQueue en Java

18. ¿Qué es el código hash()?

Imagen para demostrar el código hash de Java

Imagen para demostrar el código hash de Java

El método hashCode() devuelve el valor del código hash como un número entero. Se define en la clase de objeto Java que calcula los valores hash de los objetos de entrada determinados. El valor de Hashcode se utiliza principalmente en colecciones basadas en hash como HashMap, HashSet, HashTable… etc. Este método debe anularse en cada clase que anule el método equals().

Sintaxis:

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

Para obtener más información, consulte el artículo: Métodos iguales () y hashCode () en Java

19. Distinga entre ArrayList y Vector en Java Collection Framework.

En las entrevistas de cobranza, esta pregunta se hace con frecuencia; sin embargo, Vector está sincronizado mientras que ArrayList no. ArrayList es más rápido que Vector. El tamaño de la matriz de ArrayList aumenta en un 50% cuando es necesario, mientras que la capacidad de Vector se duplica cuando es necesario.

Lista de matrices vs vector en java

Lista de matrices vs vector en java

Lista de arreglo

Vector

ArrayList no está sincronizado El vector está sincronizado.
El tamaño de ArrayList se incrementa hasta un 50% del tamaño actual de la matriz si el número de elementos excede su capacidad. El tamaño de ArrayList se incrementa hasta el 100% del tamaño actual de la matriz si el número de elementos excede su capacidad.
ArrayList es rápido porque no está sincronizado. Vector es más lento porque está sincronizado.
La interfaz del iterador se utiliza para atravesar los elementos. Se puede utilizar una interfaz de iterador o enumeración para atravesar el vector.

Para obtener más información, consulte el artículo: Vector vs ArrayList en Java

20. Diferenciar entre Iterador y ListIterator.

Iterador

ListaIterador

Puede atravesar elementos presentes en la Colección solo en dirección hacia adelante. Puede atravesar elementos presentes en la Colección tanto hacia adelante como hacia atrás.
Ayuda a recorrer Mapa, Lista y Conjunto. Solo se puede atravesar List y no los otros dos.
Los índices no se pueden obtener utilizando Iterator. Tiene métodos como nextIndex() y anteriorIndex() para obtener índices de elementos en cualquier momento mientras recorre la Lista.
No se pueden modificar ni reemplazar elementos presentes en la Colección. Podemos modificar o reemplazar elementos con la ayuda de set(E e)

Para obtener más información, consulte el artículo: Diferencia entre un iterador y ListIterator

21. ¿Cuál es la diferencia entre un iterador y una enumeración?

Iterador: Es un iterador universal ya que podemos aplicarlo a cualquier objeto de Colección. Al utilizar un iterador, podemos realizar operaciones de lectura y eliminación.

Sintaxis:

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

Enumeración: La enumeración (o enumeración) es un tipo de datos definido por el usuario. Se utiliza principalmente para asignar nombres a constantes integrales; los nombres hacen que un programa sea fácil de leer y mantener.

Sintaxis:

// 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ón

El iterador es un cursor universal ya que es aplicable a todas las clases de colección. La enumeración no es un cursor universal ya que solo se aplica a clases heredadas.
El iterador tiene el método remove(). La enumeración no tiene el método remove().
El iterador puede realizar modificaciones (por ejemplo, utilizando el método remove() que elimina el elemento de la Colección durante el recorrido). La interfaz de enumeración actúa como una interfaz de solo lectura, no se pueden realizar modificaciones en la Colección mientras se atraviesan los elementos de la Colección.
Iterator no es una interfaz heredada. Iterator se puede utilizar para atravesar HashMap, LinkedList, ArrayList, HashSet, TreeMap y TreeSet. La enumeración es una interfaz heredada que se utiliza para atravesar Vector y Hashtable.

Para obtener más información, consulte el artículo: Diferencia entre iterador y enumeración

22. ¿Cuáles son las características de Java Hashmap?

HashMap es similar a HashTable, pero no está sincronizado. También nos permite almacenar las claves nulas, pero solo debe haber un objeto de clave nula y puede haber cualquier número de valores nulos. Esta clase no ofrece garantías en cuanto al orden del mapa. Para usar esta clase y sus métodos, necesita importar java.util. HashMap paquete o su superclase.

HashMap en Java

HashMap en Java

Sintaxis:

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

Parámetros: Se necesitan dos parámetros, a saber, los siguientes:

  • El tipo de claves mantenidas por este mapa (K)
  • El tipo de valores mapeados (V)

Para obtener más información, consulte el artículo: HashMap en Java con ejemplos

23. ¿Qué son las interfaces de colección?

El Recopilación La interfaz es miembro del marco de colecciones de Java. es parte de java.util paquete. Es una de las interfaces raíz de la jerarquía de colecciones. La interfaz de la Colección no la implementa directamente ninguna clase. Sin embargo, se implementa indirectamente a través de sus subtipos o subinterfaces como Lista, Cola y Conjunto.

Por ejemplo, la clase HashSet implementa la interfaz Set, que es una subinterfaz de la interfaz Collection. Si la implementación de una colección no implementa una operación particular, debe definir el método correspondiente para lanzar UnsupportedOperationException.

La jerarquía de la colección:

Interfaz de colección en Java

Interfaz de colección en Java

24. Explique la interfaz de la lista.

Interfaz de clase en Java

Interfaz de clase en Java

En Java, la interfaz Lista permite al usuario almacenar una colección ordenada de objetos. La lista es la interfaz secundaria de Collection. En Colección, una lista es una colección ordenada de objetos que pueden tener valores duplicados. Dado que List conserva el orden de inserción, permite el acceso posicional y la inserción, lo que también permite valores duplicados.

Sintaxis:

public interface List extends Collection ;>

Esta interfaz de lista está implementada por varias clases como ArrayList, Vector, Stack, etc. Dado que todas las subclases implementan la lista, podemos crear una instancia de un objeto de lista con cualquiera de estas clases.

Ejemplo:

genericidad en java

Lista al = nueva ArrayList ();
Lista ll = nueva ListaEnlazada ();
Lista v = nuevo Vector ();

Donde T es el tipo de objeto.

Lista de matrices en Java

Lista de matrices en Java

Las clases que implementan la interfaz List son las siguientes:

  • Lista de arreglo
  • Lista enlazada
  • Vector
  • Pila

25. Escriba un programa para convertir una matriz determinada en una colección con el método asList().

Para convertir datos basados ​​en matrices en datos basados ​​en colecciones, podemos usar java.util.Arrays clase. Esta clase proporciona un método estático asList(T… a) que convierte la matriz en una Colección.

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

>

>

Producción

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

26. Diferenciar entre HashSet y HashMap

Conjunto de hash

HashMap

HashSet implementa la interfaz Set HashMap implementa la interfaz Map
No se permiten duplicados Sí, se permiten valores duplicados, pero no se permite ninguna clave duplicada.
Se permiten valores ficticios en HashSet. No se permiten valores ficticios en HashMap.
Se requiere un solo objeto durante una operación de adición Se requieren 2 objetos durante una operación de adición
La velocidad es comparativamente más lenta que HashMap La velocidad es comparativamente más rápida que HashSet debido a que aquí se ha utilizado la técnica de hash.
Tener un único valor nulo Clave nula única y cualquier número de valores nulos
El método Add() se utiliza para la inserción. El método put () se utiliza para la inserción.

Para obtener más información, consulte el artículo: Diferencia entre HashMap y HashSet

27. Diferenciar entre HashSet y HashTable.

Conjunto de hash

Tabla de picadillo

HashSet permite elementos NULL HashTable no permite elementos NULL.

No se garantiza que los objetos que inserte en HashSet se inserten en el mismo orden. Los objetos se insertan según su código hash. LinkedHashSet se puede utilizar para mantener el orden.

HashTable no mantiene el orden de inserción.
HashSet no está sincronizado pero se puede sincronizar externamente. HashTable está sincronizado.
El método add() se utiliza para insertar en HashSet El método put() se utiliza para insertar en HashTable

28. ¿Cuál es el tamaño predeterminado del factor de carga en la colección basada en hash?

A medida que aumenta el factor de carga, la capacidad aumenta de modo que la complejidad operativa del HashMap sigue siendo O(1) si la relación entre el elemento actual y la capacidad inicial cruza el umbral. El significado de complejidad operativa de O(1) significa que las operaciones de recuperación e inserción toman un tiempo constante. El tamaño del factor de carga predeterminado es 0.75 . La capacidad predeterminada se calcula multiplicando la capacidad inicial por el factor de carga.

Para obtener más información, consulte el artículo: Factor de carga en HashMap en Java con ejemplos

Preguntas de la entrevista de la colección Java para experimentados

29. ¿Cuál es la diferencia entre Comparable y Comparador en Java?

Java proporciona dos interfaces para ordenar objetos utilizando miembros de datos de la clase:

  • Comparable
  • Comparador

Comparable

Comparador

La interfaz Comparable proporciona una única secuencia de clasificación. La interfaz Comparator proporciona múltiples secuencias de clasificación.
La clase real es modificada por una interfaz comparable. La clase real no es modificada por la interfaz Comparator.
El método compareTo() se utiliza para ordenar elementos. El método compare() se utiliza para ordenar elementos.
Comparable está presente en el paquete java.lang El comparador está presente en el paquete java.util

Para obtener más información, consulte el artículo: Comparable vs Comparador en Java

30. ¿Cuál es la diferencia entre a prueba de fallos y a prueba de fallos?

Los iteradores en Java se utilizan para iterar sobre los objetos de la colección. Los iteradores a prueba de fallos lanzan inmediatamente ConcurrentModificationException si hay un modificación estructural de la colección. La modificación estructural significa agregar o eliminar cualquier elemento de una colección mientras un hilo itera sobre esa colección. Iterador en las clases ArrayList y HashMap son algunos ejemplos de Iterador a prueba de fallas.

Fallar rapido A prueba de fallos
Se lanza ConcurrentModificationException al modificar el objeto durante el proceso de iteración. No se lanza ninguna excepción
Fail-Fast necesita menos memoria durante el proceso. El iterador a prueba de fallos requiere más memoria durante el proceso.
No se crea un objeto clonado durante el proceso de iteración. Durante el proceso de iteración se crea un objeto clonado o una copia.
Fail-Fast no permite modificaciones durante el proceso de iteración. Fail-Safe permite modificaciones durante el proceso de iteración.
Fail-Fast es rápido, Fail-Safe es un poco más lento que fallar rápido.

Ejemplos:

ArrayList, Vector, HashMap, HashSet, etc.

Ejemplos:

ConcurrentHashMap, CopyOnWriteArrayList, etc.

Para obtener más información, consulte el artículo: Iteradores a prueba de fallos y a prueba de fallos en Java

31. Escriba un programa para iterar la lista usando la expresión lambda.

La iteración se puede hacer usando un expresión lambda.

Sintaxis:

list_name.forEach(variable->{//bloque de código})>

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

>

>

Producción

Geeks for Geeks>

Para obtener más información, consulte el artículo: Iterar a través de la lista en Java

32. ¿Qué es IdentityHashMap?

IdentityHashMap implementa la interfaz Map usando Hashtable, comparando claves (y valores) usando igualdad de referencia en lugar de igualdad de objetos. Esta clase implementa la interfaz Map, pero rompe intencionalmente el contrato general de Map, que exige que los objetos se comparen utilizando el método equals(). Esta clase se utiliza cuando el usuario permite comparar objetos mediante referencias. Pertenece al paquete java.util.

Para obtener más información, consulte el artículo: Clase IdentityHashMap en Java

33. Escriba un programa en Java para mostrar el contenido de una HashTable mediante enumeración.

La clase hashtable implementa una tabla hash, que asigna claves a valores. Cualquier objeto no nulo se puede utilizar como clave o como valor. Para almacenar y recuperar objetos de una tabla hash con éxito, los objetos utilizados como claves deben implementar el método hashCode y el método igual. A continuación se muestra el programa para mostrar el contenido de una HashTable mediante enumeración:

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

>

>

Producción

Geeks for Geeks>

34. Escriba un programa en Java para obtener la vista de colección de los valores presentes en un HashMap.

La clase HashMap de Java tiene el método java.util.HashMap.values() para crear colecciones a partir de valores de HashMap. Básicamente, devuelve una vista de Colección de valores 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());> >}> }>

>

>

Producción

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

Para obtener más información, consulte el artículo: Método HashMap valores() en Java

35. Escriba un programa para unir dos ArrayList en un solo ArrayList.

Dadas dos ArrayLists en Java, nuestra tarea es unir estas ArrayLists.

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

>

>

Producción

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

Para obtener más información, consulte el artículo: Unir dos ArrayLists en Java

36. ¿Cómo se puede sincronizar un ArrayList en Java?

Usando el método Collections.synchronizedList(), podemos sincronizar nuestras colecciones en Java. SynchronizedList() devuelve una lista sincronizada (segura para subprocesos) respaldada por una selección.

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

>

>

Producción

Eat Coffee Code Sleep Repeat>

37. ¿Qué es una clase de propiedades en Java?

La clase de propiedades es una subclase de Hashtable. La clase de propiedades almacena una lista de valores cuya clave es una cadena y cuyo valor también es una cadena. Las propiedades pueden definir otras listas de clases de propiedades, pero el valor predeterminado son las propiedades.

Características de la clase Propiedades:

  • La propiedad es una subclase de Hashtable.
  • El archivo de propiedades se utiliza para almacenar y recuperar tipos de datos de cadena para una lista de valores donde la clave es una cadena y el valor también es una cadena.
  • Si la lista de propiedades original no contiene una determinada propiedad clave, se buscará en la lista de propiedades predeterminada.
  • Los objetos pueden ser compartidos por varios subprocesos sin sincronización externa.
  • La clase de propiedades se puede utilizar para recuperar las propiedades del sistema.

Para obtener más información, consulte el artículo: Clase de propiedades en Java

38. ¿Qué pasará si usa HashMap en una aplicación Java multiproceso?

En un entorno de subprocesos múltiples, si varios subprocesos alteran estructuralmente el mapa, como agregar, eliminar o modificar asignaciones, la estructura de datos interna de HashMap puede corromperse y es posible que falten algunos enlaces, entradas incorrectas y el mapa en sí puede volverse completamente inútil. Por lo tanto, no debes usar HashMap en una aplicación concurrente; en su lugar, utilice ConcurrentHashMap o Hashtable, que es seguro para subprocesos. ConcurrentHashMap incluye todos los métodos de Hashtable, así como total simultaneidad de recuperaciones y actualizaciones.

¿Cómo se volvió ThreadSafeConcurrentHashMap seguro para subprocesos?

  • La clase java.util.Concurrent.ConcurrentHashMap proporciona seguridad para subprocesos al dividir el mapa en segmentos, lo que permite que el bloqueo se realice solo una vez por segmento, es decir, una vez para cada subproceso.
  • La operación de lectura en ConcurrentHashMap no requiere un bloqueo.

Para obtener más información, consulte el artículo: ¿Cómo logra ConcurrentHashMap la seguridad de subprocesos en Java?

39. ¿Qué pasará si dos claves diferentes de HashMap devuelven el mismo código hash()?

Cuando dos claves diferentes de HashMap devuelven el mismo código hash, terminarán en el mismo depósito; por lo tanto, se producirán colisiones. En caso de colisión, es decir, el índice de dos o más nodos es el mismo, los nodos se unen mediante una lista de enlaces, es decir, el primer nodo hace referencia al segundo nodo y el segundo al tercero, y así sucesivamente.

Para obtener más información, consulte el artículo: Funcionamiento interno de HashMap en Java

40. ¿Qué es WeakHashMap?

WeakHashMap implementa la interfaz Map. A diferencia de HashMap, WeakHashMap permite la recolección de basura incluso si el objeto especificado como clave no contiene ninguna referencia a pesar de estar asociado con WeakHashMap. En otras palabras, Garbage Collector es mejor que WeakHashMap.

Para obtener más información, consulte el artículo: Hashmap frente a WeakHashMap en Java

41. ¿Qué es la excepción de operación no admitida?

En el contexto de API o implementaciones de listas, UnsupportedOperationException es una excepción común. La excepción se produce cuando no se puede realizar la operación solicitada. Esta clase es miembro del marco de colecciones de Java.

Sintaxis:

public class UnsupportedOperationException extends RuntimeException>

Para obtener más información, consulte el artículo: Excepción de operación no admitida

42. ¿Cómo hacer que una colección sea de solo lectura en Java?

La creación de una colección de solo lectura implica restringir el objeto para que solo obtenga los datos y no agregue ni elimine datos. Java tiene diferentes métodos para diferentes tipos de colecciones como unmodifiableCollection(), unmodifiableMap(), ununmodifiableSet(), etc. java.util.La clase de colecciones define todos los métodos. El método unmodifiableCollection() crea una colección de solo lectura. Requiere una referencia a la clase Colección. Si tenemos un objeto de Set Interface, podemos usar Conjunto no modificable() para hacer sólo lectura.

Para obtener más información, consulte el artículo: ¿Cómo hacer que una colección sea de solo lectura en Java?

43. ¿Diferencia entre PriorityQueue y TreeSet en Java?

Cola de prioridad

Conjunto de árboles

PriorityQueue viene en JDK 1.5. TreeSet viene en JDK 1.4.
La estructura de datos utilizada por PriorityQueue es Queue La estructura de datos utilizada por TreeSet es Set.
Se permiten elementos duplicados. No se permiten elementos duplicados.
A excepción del elemento raíz, el resto de elementos no siguen ningún orden particular en PriorityQueue. En TreeSet todos los elementos permanecen ordenados.
Usando PriorityQueue, podemos recuperar el elemento más grande o más pequeño en tiempo O (1). TreeSet no proporciona una manera de recuperar el elemento más grande o más pequeño en tiempo O(1), pero como están ordenados, obtiene el primer o último elemento en tiempo O(1).

Para obtener más información, consulte el artículo: Diferencia entre PriorityQueue y TreeSet

44. ¿Qué es el operador diamante en Java?

Los operadores de diamante se utilizan para simplificar el uso de genéricos al crear objetos y al mismo tiempo evitar advertencias no verificadas en un programa. Cuando se introdujo el operador Diamond en Java 7, podemos crear el objeto sin mencionar el tipo genérico en el lado derecho de la expresión como se muestra a continuación.

Sintaxis:

List list = new ArrayList();>

Para obtener más información, consulte el artículo: operador de diamantes

45. ¿Cómo funciona TreeMap en Java?

ÁrbolMapa almacena los pares clave-valor, pero TreeMap ordena las claves de forma ascendente en lugar de descendente como HashMap. Dependiendo del constructor que se utilice, TreeMap se ordenará según sus claves o según un Comparador. En TreeMap, los elementos se ordenan según un árbol rojo-negro. Un árbol rojo-negro es un árbol de búsqueda binario autoequilibrado donde cada nodo tiene un bit adicional, y ese bit a menudo se interpreta como el color (rojo o negro). Estos colores se utilizan para garantizar que el árbol permanezca equilibrado durante las inserciones y eliminaciones.

Estructura de un nodo en Java

Estructura de un nodo en Java

Para obtener más información, consulte el artículo: Funcionamiento interno de TreeMap en Java

46. ​​¿Enumere formas de iterar sobre Map en Java?

La clase HashMap proporciona la interfaz Map de Java almacenando datos en pares (Clave, Valor) y accediendo a ellos mediante un índice de otro tipo. Para utilizar esta clase es necesario importar java.util.HashMap paquete o su superclase.

Existen numerosas formas de iterar sobre HashMap, de las cuales 5 se enumeran a continuación:

  1. Iterar a través de un HashMap EntrySet utilizando iteradores.
  2. Iterar a través de HashMap KeySet usando Iterator.
  3. Iterar HashMap utilizando el bucle for-each.
  4. Iterando a través de un HashMap usando expresiones Lambda.
  5. Recorre un HashMap usando Stream API.

Para obtener más información, consulte el artículo: Cómo iterar HashMap en Java

47. ¿Qué es CopyOnWriteArrayList en Java?

CopiarOnWriteArrayList en Java

CopiarOnWriteArrayList en Java

JDK 1.5 introdujo una versión mejorada de ArrayList llamada CopyOnWriteArrayList, donde todas las modificaciones (agregar, configurar, eliminar, etc.) se implementan mediante una nueva copia. Se puede encontrar en java.util.concurrent. Es una estructura de datos creada para ser utilizada en un entorno concurrente. En un entorno basado en subprocesos, CopyOnWriteArrayList está diseñado para lecturas frecuentes y actualizaciones poco frecuentes. CopyOnWriteArrayList es una versión segura para subprocesos de ArrayList.

Para obtener más información, consulte el artículo: CopiarOnWriteArrayList en Java

48. ¿Qué es EnumMap en Java?

EnumMap es una implementación de la interfaz Map específica para tipos de enumeración. La clase EnumMap es miembro del marco de colecciones de Java y no está sincronizada. Extiende AbstractMap e implementa la interfaz Map en java. EnumMap pertenece al paquete java.util.

Sintaxis:

clase pública EnumMapextiende AbstractMap implementa Serializable, Clonable

// K debe extender Enum, lo que impone el requisito de que las claves deben ser del tipo de enumeración especificado.

Parámetros:

  • Tipo de objeto clave
  • Tipo de objeto de valor
EnumMap en Java

EnumMap en Java

Para obtener más información, consulte el artículo: Clase EnumMap en Java

49. ¿Cómo funciona Hashmap internamente?

HashMap funciona según el principio de Hashing. HashMap contiene una matriz de Node y Node puede representar una clase que tiene los siguientes objetos:

  • hash int
  • tecla K
  • valor V
  • Nodo siguiente

El funcionamiento interno de HashMap:

  • hash
  • cubos
  • Cálculo del índice en Hashmap

Para obtener más información, consulte el artículo: Funcionamiento interno de HashMap en Java

50. ¿Por qué el iterador en hashmap se considera rápido?

Los iteradores a prueba de fallos lanzan inmediatamente excepciones de modificación simultánea si algún subproceso externo intenta modificar la colección en la que están iterando. La función de falla rápida garantiza que el iterador falle inmediatamente si detecta que cualquier modificación de la colección conducirá a un comportamiento anómalo en el futuro.

Fallar rapido La característica garantiza que si el iterador considera que la modificación de la colección daría como resultado un comportamiento anómalo en cualquier momento en el futuro, falla inmediatamente.

Ejemplo:

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

cómo ordenar la lista de matrices en java
>

>

Producción:

[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ón

Colecciones Java Es importante que los desarrolladores o programadores de Java lo comprendan porque Java se usa ampliamente en diversas industrias. Es importante que los desarrolladores tengan una comprensión sólida de los conceptos básicos de las colecciones de Java. Java es uno de los lenguajes más utilizados en empresas importantes como Úber , Airbnb , Google , netflix , Instagram , Spotify, Amazonas , etc. Para ingresar a estas empresas o a cualquier otra empresa de TI, debe dominar estas preguntas de la entrevista de las colecciones de Java más frecuentes para poder descifrar su evaluación en línea y entrevista técnica basadas en Java.

Si buscas practicar preguntas de codificación, el Programas de colección JAVA puede ser un recurso útil.

Preguntas de la entrevista sobre colecciones de Java: preguntas frecuentes

1. ¿Qué son las colecciones en las preguntas de la entrevista de Java?

Colección en Java es un marco utilizado para almacenar y manipular colecciones de objetos.

2. ¿Cuáles son las 4 clases de colección en Java?

Hay muchas colecciones en Java, pero las más utilizadas son:

  1. Lista de arreglo
  2. Lista enlazada
  3. Conjunto de hash
  4. Pila

3. ¿Puede HashMap tener claves duplicadas?

No, HashMap no puede tener claves duplicadas. Como HashMap es una de las colecciones de Java, almacena el valor en forma de clave-valor y cada clave tiene su propio valor adjunto. Entonces, como ninguna clave puede tener dos valores, significa que no podemos tener claves duplicadas en HashMap.

4. ¿Por qué una matriz no es una colección?

La matriz no es una colección, todo se debe a la diferencia en la funcionalidad entre colecciones y matrices, algunas de las cuales se mencionan a continuación:

  • El tamaño del Array no se puede cambiar una vez declarado
  • Las matrices solo pueden contener elementos de tipos de datos homogéneos.
  • La matriz puede contener tanto tipos de datos primitivos como objetos, mientras que en las colecciones solo puede contener objetos envoltorios.