En Java, las preguntas de la entrevista de colección son las que más hacen los entrevistadores. Aquí está la lista de las preguntas más frecuentes de las entrevistas sobre colecciones con sus respuestas.
1) ¿Qué es el marco de la Colección en Java?
Collection Framework es una combinación de clases e interfaz, que se utiliza para almacenar y manipular datos en forma de objetos. Proporciona varias clases como ArrayList, Vector, Stack y HashSet, etc. e interfaces como List, Queue, Set, etc. para este propósito.
2) ¿Cuáles son las principales diferencias entre matriz y colección?
Array y Collection son algo similares en cuanto a almacenar las referencias de objetos y manipular los datos, pero difieren en muchos aspectos. Las principales diferencias entre la matriz y la Colección se definen a continuación:
- Las matrices siempre tienen un tamaño fijo, es decir, un usuario no puede aumentar o disminuir la longitud de la matriz según sus requisitos o en tiempo de ejecución, pero en la colección, el tamaño se puede cambiar dinámicamente según sea necesario.
- Las matrices solo pueden almacenar objetos de tipo homogéneo o similar, pero en Colección se pueden almacenar objetos heterogéneos.
- Las matrices no pueden proporcionar el contenido 'listo para usar'. métodos para los requisitos del usuario como clasificación, búsqueda, etc., pero la Colección incluye métodos listos para usar.
3) ¿Explicar varias interfaces utilizadas en el marco de la Colección?
El marco de colección implementa varias interfaces, la interfaz de colección y la interfaz de mapa (java.util.Map) son las interfaces más utilizadas de Java Collection Framework. A continuación se proporciona una lista de interfaces de Collection Framework:
1. Interfaz de colección: La colección (java.util.Collection) es la interfaz principal y cada colección debe implementar esta interfaz.
Sintaxis:
public interface Collectionextends Iterable
Donde representa que esta interfaz es de tipo Genérico
2. Interfaz de lista: La interfaz de lista extiende la interfaz de Colección y es una colección ordenada de objetos. Contiene elementos duplicados. También permite el acceso aleatorio de elementos.
Sintaxis:
public interface List extends Collection
3. Establecer interfaz: La interfaz Set (java.util.Set) es una colección que no puede contener elementos duplicados. Solo puede incluir métodos heredados de la interfaz de Colección.
Sintaxis:
public interface Set extends Collection
Interfaz de cola: La interfaz de cola (java.util.Queue) define la estructura de datos de la cola, que almacena los elementos en el formato FIFO (primero en entrar, primero en salir).
Sintaxis:
public interface Queue extends Collection
4. Interfaz de salida de cola: es una cola de dos extremos. Permite la inserción y extracción de elementos por ambos extremos. Implanta las propiedades tanto de la pila como de la cola para que pueda realizar operaciones de pila LIFO (último en entrar, primero en salir) y cola FIFO (primero en entrar, primero en salir).
Sintaxis:
public interface Dequeue extends Queue
5. Interfaz del mapa: Un mapa (java.util.Map) representa un almacenamiento de elementos de par clave-valor. La interfaz del mapa no implementa la interfaz de la Colección. Sólo puede contener una clave única pero puede tener elementos duplicados. Hay dos interfaces que implementan Map en Java que son la interfaz Map y el mapa ordenado.
convertir nfa a dfa
4) ¿Cuál es la diferencia entre ArrayList y Vector?
No. | Lista de arreglo | Vector |
---|---|---|
1) | ArrayList no está sincronizado. | El vector está sincronizado. |
2) | ArrayList no es una clase heredada. | Vector es una clase heredada. |
3) | ArrayList aumenta su tamaño en un 50% del tamaño de la matriz. | Vector aumenta su tamaño duplicando el tamaño de la matriz. |
4) | ArrayList no es 'seguro para subprocesos' ya que no está sincronizado. | ¿La lista de vectores es segura para subprocesos? ya que todos los métodos están sincronizados. |
5) ¿Cuál es la diferencia entre ArrayList y LinkedList?
No. | Lista de arreglo | Lista enlazada |
---|---|---|
1) | ArrayList utiliza una matriz dinámica. | LinkedList utiliza una lista doblemente enlazada. |
2) | ArrayList no es eficiente para la manipulación porque se requiere demasiado. | LinkedList es eficaz para la manipulación. |
3) | ArrayList es mejor para almacenar y recuperar datos. | LinkedList es mejor para manipular datos. |
4) | ArrayList proporciona acceso aleatorio. | LinkedList no proporciona acceso aleatorio. |
5) | ArrayList requiere menos memoria ya que solo almacena objetos | LinkedList requiere más memoria, ya que almacena el objeto así como la dirección de ese objeto. |
6) ¿Cuál es la diferencia entre Iterador y ListIterator?
Iterator atraviesa los elementos en dirección hacia adelante solo, mientras que ListIterator atraviesa los elementos hacia adelante y hacia atrás.
No. | Iterador | ListaIterador |
---|---|---|
1) | El iterador atraviesa los elementos únicamente en dirección hacia adelante. | ListIterator atraviesa los elementos hacia adelante y hacia atrás. |
2) | El iterador se puede utilizar en listas, conjuntos y colas. | ListIterator solo se puede utilizar en Lista. |
3) | El iterador solo puede realizar la operación de eliminación mientras atraviesa la colección. | ListIterator puede realizar? agregar? ?eliminar,? ¿y establecer? operación mientras atraviesa la colección. |
7) ¿Cuál es la diferencia entre iterador y enumeración?
No. | Iterador | Enumeración |
---|---|---|
1) | El iterador puede atravesar elementos heredados y no heredados. | La enumeración solo puede atravesar elementos heredados. |
2) | El iterador no falla. | La enumeración no es rápida. |
3) | El iterador es más lento que la enumeración. | La enumeración es más rápida que Iterator. |
4) | El iterador puede realizar una operación de eliminación mientras atraviesa la colección. | La enumeración solo puede realizar operaciones transversales en la colección. |
8) ¿Cuál es la diferencia entre Lista y Conjunto?
Tanto List como Set amplían la interfaz de colección. Sin embargo, existen algunas diferencias entre ambos que se enumeran a continuación.
- La Lista puede contener elementos duplicados, mientras que el Conjunto incluye elementos únicos.
- La Lista es una colección ordenada que mantiene el orden de inserción, mientras que Conjunto es una colección desordenada que no conserva el orden de inserción.
- La interfaz List contiene una única clase heredada que es la clase Vector, mientras que la interfaz Set no tiene ninguna clase heredada.
- La interfaz Lista puede permitir un número n de valores nulos, mientras que la interfaz Establecer solo permite un único valor nulo.
9) ¿Cuál es la diferencia entre HashSet y TreeSet?
HashSet y TreeSet, ambas clases, implementan la interfaz Set. Las diferencias entre ambos se enumeran a continuación.
- HashSet no mantiene ningún orden, mientras que TreeSet mantiene un orden ascendente.
- HashSet está limitado por una tabla hash, mientras que TreeSet se implementa mediante una estructura de árbol.
- HashSet funciona más rápido que TreeSet.
- HashSet está respaldado por HashMap mientras que TreeSet está respaldado por TreeMap.
10) ¿Cuál es la diferencia entre Conjunto y Mapa?
Las diferencias entre el Conjunto y el Mapa se detallan a continuación.
- El conjunto contiene solo valores, mientras que el mapa contiene claves y valores.
- El conjunto contiene valores únicos, mientras que el mapa puede contener claves únicas con valores duplicados.
- Set contiene un único número de valores nulos, mientras que Map puede incluir una única clave nula con n números de valores nulos.
11) ¿Cuál es la diferencia entre HashSet y HashMap?
Las diferencias entre HashSet y HashMap se enumeran a continuación.
- HashSet contiene solo valores, mientras que HashMap incluye la entrada (clave, valor). HashSet se puede iterar, pero HashMap debe convertirse en Set para poder iterarse.
- HashSet implementa la interfaz Set mientras que HashMap implementa la interfaz Map
- HashSet no puede tener ningún valor duplicado, mientras que HashMap puede contener valores duplicados con claves únicas.
- HashSet contiene el único número de valor nulo, mientras que HashMap puede contener una única clave nula con n número de valores nulos.
12) ¿Cuál es la diferencia entre HashMap y TreeMap?
Las diferencias entre HashMap y TreeMap se detallan a continuación.
- HashMap no mantiene ningún orden, pero TreeMap mantiene un orden ascendente.
- HashMap se implementa mediante una tabla hash, mientras que TreeMap se implementa mediante una estructura de árbol.
- HashMap se puede ordenar por clave o valor, mientras que TreeMap se puede ordenar por clave.
- HashMap puede contener una clave nula con múltiples valores nulos, mientras que TreeMap no puede contener una clave nula pero puede tener múltiples valores nulos.
13) ¿Cuál es la diferencia entre HashMap y Hashtable?
No. | HashMap | Tabla de picadillo |
---|---|---|
1) | HashMap no está sincronizado. | Hashtable está sincronizado. |
2) | HashMap puede contener una clave nula y varios valores nulos. | Hashtable no puede contener ninguna clave nula o valor nulo. |
3) | HashMap no es 'seguro para subprocesos' por lo que es útil para aplicaciones sin subprocesos. | Hashtable es seguro para subprocesos y se puede compartir entre varios subprocesos. |
4) | 4) HashMap hereda la clase AbstractMap | Hashtable hereda la clase Diccionario. |
14) ¿Cuál es la diferencia entre Colección y Colecciones?
Las diferencias entre la Colección y las Colecciones se detallan a continuación.
- La Colección es una interfaz, mientras que las Colecciones son una clase.
- La interfaz de Colección proporciona la funcionalidad estándar de estructura de datos para Listar, Conjunto y Cola. Sin embargo, la clase Colecciones sirve para ordenar y sincronizar los elementos de la colección.
- La interfaz Colección proporciona los métodos que se pueden usar para la estructura de datos, mientras que la clase Colecciones proporciona los métodos estáticos que se pueden usar para diversas operaciones en una colección.
15) ¿Cuál es la diferencia entre Comparable y Comparador?
No. | Comparable | Comparador |
---|---|---|
1) | Comparable proporciona sólo un tipo de secuencia. | El Comparador proporciona múltiples tipos de secuencias. |
2) | Proporciona un método llamado compareTo(). | Proporciona un método llamado comparar(). |
3) | Se encuentra en el paquete java.lang. | Se encuentra en el paquete java.util. |
4) | Si implementamos la interfaz Comparable, la clase real se modifica. | La clase real no cambia. |
16) ¿Qué entiendes por BlockingQueue?
BlockingQueue es una interfaz que amplía la interfaz Queue. Proporciona concurrencia en operaciones como recuperación, inserción y eliminación. Mientras recupera cualquier elemento, espera a que la cola no esté vacía. Mientras almacena los elementos, espera el espacio disponible. BlockingQueue no puede contener elementos nulos y la implementación de BlockingQueue es segura para subprocesos.
Sintaxis:
public interface BlockingQueue extends Queue
17) ¿Cuál es la ventaja del archivo de Propiedades?
Si cambia el valor en el archivo de propiedades, no necesita volver a compilar la clase Java. Por lo tanto, hace que la aplicación sea fácil de administrar. Se utiliza para almacenar información que debe cambiarse con frecuencia. Considere el siguiente ejemplo.
lobo contra zorro
import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } }
Producción
system oracle
18) ¿Qué significa el método hashCode()?
El método hashCode() devuelve un valor de código hash (un número entero).
El método hashCode() devuelve el mismo número entero si dos claves (llamando al método equals()) son idénticas.
Sin embargo, es posible que dos números de código hash tengan claves iguales o diferentes.
Si dos objetos no producen un resultado igual al usar el método equals(), entonces el método hashcode() proporcionará un resultado entero diferente para ambos objetos.
19) ¿Por qué anulamos el método equals()?
El método igual se utiliza para comprobar si dos objetos son iguales o no. Es necesario anularlo si queremos verificar los objetos según la propiedad.
Por ejemplo, Empleado es una clase que tiene 3 miembros de datos: identificación, nombre y salario. Sin embargo, queremos comprobar la igualdad del objeto empleado por el salario. Luego, necesitamos anular el método equals().
20) ¿Cómo sincronizar elementos de Lista, Conjunto y Mapa?
Sí, la clase Colecciones proporciona métodos para sincronizar elementos de Lista, Conjunto o Mapa:
Lista pública estática lista sincronizada (Lista l) {} |
Conjunto estático público conjunto sincronizado (Establecer s) {} |
SortedSet estático público sincronizadoSortedSet (SortedSet s) {} |
Mapa estático público sincronizadoMap(Mapa m){} |
SortedMap estático público sincronizadoSortedMap(SortedMap m){} |
21) ¿Cuál es la ventaja de la colección genérica?
Hay tres ventajas principales de utilizar la colección genérica.
- Si usamos la clase genérica, no necesitamos encasillamiento.
- Tiene seguridad de tipos y se verifica en tiempo de compilación.
- Generic confirma la estabilidad del código al hacer que se detecten errores en el momento de la compilación.
22) ¿Qué es la colisión de hash en Hashtable y cómo se maneja en Java?
Dos claves diferentes con el mismo valor hash se conocen como colisión hash. Se mantendrán dos entradas separadas en un único depósito de hash para evitar la colisión. Hay dos formas de evitar la colisión de hash.
- Encadenamiento separado
- Direccionamiento abierto
23) ¿Qué es la clase Diccionario?
La clase Diccionario proporciona la capacidad de almacenar pares clave-valor.
24) ¿Cuál es el tamaño predeterminado del factor de carga en la recopilación basada en hash?
El tamaño predeterminado del factor de carga es 0.75 . La capacidad predeterminada se calcula como capacidad inicial * factor de carga. Por ejemplo, 16 * 0,75 = 12. Entonces, 12 es la capacidad predeterminada de Map.
25) ¿Qué entiendes por fallar rápido?
El iterador en Java que arroja inmediatamente una excepción ConcurrentmodificationException, si se produce alguna modificación estructural, se denomina iterador a prueba de fallos. El iterador Fail-Fats no requiere ningún espacio adicional en la memoria.
26) ¿Cuál es la diferencia entre Array y ArrayList?
Las principales diferencias entre Array y ArrayList se detallan a continuación.
SN | Formación | Lista de arreglo |
---|---|---|
1 | La matriz tiene un tamaño fijo, lo que significa que no podemos cambiar el tamaño de la matriz según sea necesario. | ArrayList no tiene un tamaño fijo, podemos cambiar el tamaño dinámicamente. |
2 | Las matrices son del tipo estático. | ArrayList es de tamaño dinámico. |
3 | Las matrices pueden almacenar tipos de datos primitivos así como objetos. | ArrayList no puede almacenar los tipos de datos primitivos, solo puede almacenar los objetos. |
27) ¿Cuál es la diferencia entre la longitud de un Array y el tamaño de ArrayList?
La longitud de una matriz se puede obtener usando la propiedad de longitud, mientras que ArrayList no admite la propiedad de longitud, pero podemos usar el método size() para obtener la cantidad de objetos en la lista.
Encontrar la longitud de la matriz
Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length);
Encontrar el tamaño de ArrayList
ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size());
28) ¿Cómo convertir ArrayList a Array y Array a ArrayList?
Podemos convertir un Array a ArrayList usando el método asList() de la clase Arrays. El método asList() es el método estático de la clase Arrays y acepta el objeto List. Considere la siguiente sintaxis:
Arrays.asList(item)
Podemos convertir un ArrayList en Array usando el método toArray() de la clase ArrayList. Considere la siguiente sintaxis para convertir ArrayList en el objeto List.
List_object.toArray(new�String[List_object.size()])
29) ¿Cómo hacer que Java ArrayList sea de solo lectura?
Podemos obtener Java ArrayList de solo lectura llamando al método Collections.unmodifiableCollection(). Cuando definimos un ArrayList como de solo lectura, no podemos realizar ninguna modificación en la colección mediante el método add(), remove() o set().
30) ¿Cómo eliminar duplicados de ArrayList?
Hay dos formas de eliminar duplicados de ArrayList.
El proceso para eliminar elementos duplicados de ArrayList usando LinkedHashSet:
- Copie todos los elementos de ArrayList a LinkedHashSet.
- Vacíe ArrayList usando el método clear(), que eliminará todos los elementos de la lista.
- Ahora copie todos los elementos de LinkedHashset a ArrayList.
31) ¿Cómo revertir ArrayList?
Para revertir una ArrayList, podemos usar el método reverse() de la clase Colecciones. Considere el siguiente ejemplo.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Producción
printing the list.... 10 50 30 printing list in reverse order.... 30 50 10
32) ¿Cómo ordenar ArrayList en orden descendente?
Para ordenar ArrayList en orden descendente, podemos usar el método reverseOrder de la clase Colecciones. Considere el siguiente ejemplo.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Producción
métodos en java
printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10
33) ¿Cómo sincronizar ArrayList?
Podemos sincronizar ArrayList de dos formas.
- Usando el método Collections.synchronizedList()
- Usando CopyOnWriteArrayList
34) ¿Cuándo utilizar ArrayList y LinkedList?
Es mejor usar LinkedLists para las operaciones de actualización, mientras que ArrayLists es mejor para las operaciones de búsqueda.