Preguntas de la entrevista de Java (artículos de contenedor)

En segundo lugar, el contenedor

18. ¿Qué son los contenedores java?

Como se muestra:

 

 

 Primero dividido en Colección y Mapa;

La colección se divide en Lista, Conjunto y Cola;

La lista se divide en ArrayList y LinkedList;

Set se divide en HashSet, LinkedHashSet y TreeSet;

Hay PriorityQueue en Queue.

Mapa 下 分为 HashMap 、 LinkedHashMap 、 TreeMap 、 WeakHashMap ;

La colección representa una secuencia de objetos de elementos individuales; Map representa una colección de objetos de "par clave-valor".

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

java.util.Collection es una interfaz de colección (una interfaz de nivel superior de la clase de colección). Proporciona un método de interfaz común para operaciones básicas en objetos de colección. La interfaz de la Colección tiene muchas implementaciones concretas en la biblioteca de clases Java. El significado de la interfaz de Colección es proporcionar un modo de operación unificado máximo para varias colecciones específicas. Sus interfaces de herencia directa son Lista y Conjunto.

Colecciones es una clase de herramienta / ayuda para colecciones, que proporciona una serie de métodos estáticos para ordenar, buscar y operaciones de seguridad de subprocesos en elementos de la colección.

20. ¿Cuál es la diferencia entre List, Set y Map?

 

 

 21. ¿Cuál es la diferencia entre HashMap y Hashtable?

1. HashMap eliminó el método contiene de HashTable, pero agregó los métodos contiene valor () y contiene clave ().

2. HashTable está sincronizado y HashMap es asíncrono, por lo que hashTable es más eficiente.

3. HashMap permite claves vacías, pero hashTable no.

22. ¿Cómo decidir si usar HashMap o TreeMap?

Para operaciones como insertar, eliminar y ubicar elementos en el Mapa, HashMap es la mejor opción. Sin embargo, si necesita atravesar un conjunto ordenado de claves, TreeMap es una mejor opción. Según el tamaño de su colección, puede ser más rápido agregar elementos al HashMap. Cambie el mapa a un TreeMap para recorrer la clave ordenada.

23. ¿Cuéntame sobre el principio de realización de HashMap?

  Descripción general de HashMap: HashMap es una implementación asincrónica de la interfaz Map basada en tablas hash. Esta implementación proporciona todas las operaciones de mapeo opcionales y permite el uso de valores nulos y claves nulas. Esta clase no garantiza el orden de la asignación, en particular no garantiza que el orden no cambie para siempre. 

      Estructura de datos de HashMap: en el lenguaje de programación Java, hay dos estructuras básicas, una es una matriz y la otra es un puntero analógico (referencia). Todas las estructuras de datos se pueden construir con estas dos estructuras básicas. HashMap también tiene Sin excepción HashMap es en realidad una estructura de datos de "hash de lista vinculada", que es una combinación de matriz y lista vinculada.

     Cuando colocamos un elemento en el Hashmap, primero recalcula el valor hash de acuerdo con el código hash de la clave y erradica el valor hash para obtener la posición (subíndice) de este elemento en la matriz. El elemento en esta posición se almacenará en forma de una lista vinculada, el recién agregado se coloca en la parte superior de la cadena y el primero agregado se coloca al final de la cadena. Si no hay ningún elemento en esa posición en la matriz, el elemento se colocará directamente en esa posición en la matriz.

      Cabe señalar que la implementación de HashMap está optimizada en Jdk 1.8. Cuando los datos del nodo en la lista vinculada exceden de ocho, la lista vinculada se convertirá en un árbol rojo-negro para mejorar la eficiencia de la consulta, desde el original O (n) a O (logn)

24. Cuéntanos sobre el principio de realización de HashSet?

1. La capa inferior de HashSet es realizada por HashMap

2. El valor de HashSet se almacena en la clave de HashMap

3. El valor de HashMap está unificado como PRESENTE

25. ¿Cuál es la diferencia entre ArrayList y LinkedList?

La diferencia más obvia es que la estructura de datos subyacente de ArrrayList es una matriz que admite acceso aleatorio, mientras que la estructura de datos subyacente de LinkedList es una lista vinculada doblemente circular, que no admite acceso aleatorio. Para acceder a un elemento mediante subíndices, la complejidad temporal de ArrayList es O (1), mientras que LinkedList es O (n).

26. ¿Cómo convertir entre array y List?

1. La lista se convierte en una matriz: llame al método toArray de ArrayList.

2. Conversión de matriz en lista: llame al método asList de matrices.

27. ¿Cuál es la diferencia entre ArrayList y Vector?

Vector es síncrono, mientras que ArrayList no lo es. Sin embargo, si busca realizar cambios en la lista durante la iteración, debe usar CopyOnWriteArrayList. 

ArrayList es más rápido que Vector, no se sobrecargará debido a la sincronización. 

ArrayList es más versátil, porque podemos usar la clase de utilidad Colecciones para obtener fácilmente listas sincronizadas y listas de solo lectura.

28. ¿Cuál es la diferencia entre Array y ArrayList?

1. Array puede contener tipos y objetos básicos, mientras que ArrayList solo puede contener objetos. 

2. Array tiene un tamaño especificado y el tamaño de ArrayList es fijo. 

3. Array no proporciona la versatilidad de ArrayList, como addAll, removeAll e iterator.

29. ¿Cuál es la diferencia entre poll () y remove () en Queue?

Tanto poll () como remove () toman un elemento de la cola, pero poll () volverá vacío cuando el elemento no se obtenga, pero arrojará una excepción cuando remove () falle.

30. ¿Qué clases de colección son seguras para subprocesos?

vector: hay más mecanismo de sincronización (seguridad de subprocesos) que arraylist, debido a su baja eficiencia, no se recomienda usarlo ahora. En las aplicaciones web, especialmente en la página principal, a menudo se da prioridad a la eficiencia (velocidad de respuesta de la página).

statck: clase de pila, primero en entrar, primero en salir.

tabla hash: es más seguro para subprocesos que hashmap.

enumeración: Enumeración, equivalente a iterador.

31. ¿Qué es Iterator?

Iterator es un patrón de diseño, es un objeto, puede atravesar y seleccionar objetos en la secuencia, y los desarrolladores no necesitan comprender la estructura subyacente de la secuencia. Los iteradores a menudo se denominan objetos "livianos" debido al bajo costo de su creación.

32. ¿Cómo usar Iterator? ¿Cuáles son las características?

La función Iterator en Java es relativamente simple y solo puede moverse en una dirección:

  (1) El uso del método iterador () requiere que el contenedor devuelva un iterador. La primera vez que se llama al método next () de Iterator, devuelve el primer elemento de la secuencia. Nota: El método iterator () es la interfaz java.lang.Iterable, heredada por Collection.

  (2) Use next () para obtener el siguiente elemento en la secuencia.

  (3) Use hasNext () para verificar si todavía hay elementos en la secuencia.

  (4) Use remove () para eliminar el elemento recién devuelto del iterador.

  Iterator es la implementación más simple del iterador Java. ListIterator diseñado para List tiene más funciones. Puede atravesar List desde dos direcciones, y puede insertar y eliminar elementos de List.

33. ¿Cuál es la diferencia entre Iterator y ListIterator?

Iterator se puede usar para atravesar la colección Set y List, pero ListIterator solo se puede usar para atravesar List. 

Iterator solo puede atravesar la colección hacia adelante, ListIterator puede ser tanto hacia adelante como hacia atrás. 

ListIterator implementa la interfaz Iterator y contiene otras funciones, como: agregar elementos, reemplazar elementos, obtener el índice de los elementos anteriores y siguientes, y así sucesivamente.

  1. ¿Cómo asegurar que una colección no se pueda modificar?

Por unmodifiableXxx encapsular un método estático Colecciones conjunto variable de herramientas .

A través del método estático de Colecciones emptyXxx devuelve una colección inmutable vacía .

A través del método estático Colecciones, singletonXxx devuelve una colección inmutable con un objeto específico .

Supongo que te gusta

Origin www.cnblogs.com/JiHC/p/12751273.html
Recomendado
Clasificación