Tres conjuntos de puntos de conocimientos básicos de Java

1. Colecciones en Java

        La jerarquía del marco de la colección. El paquete java.util contiene todas las clases e interfaces del framework Collection. Elementos centrales del marco de colecciones de Java: interfaces, implementaciones, operaciones de agregación y algoritmos.

        La clase de colección de Java se define en el java.utilpaquete, admite genéricos y proporciona principalmente tres tipos de clases de colección, incluidos List, Sety Map. Las colecciones de Java usan un recorrido uniforme Iteratory tratan de no usar interfaces heredadas.

Jerarquía de colecciones en Java

1, lista

        La lista es el tipo de colección más básico: es una lista ordenada. En las aplicaciones prácticas, necesitamos agregar y eliminar una lista ordenada de elementos, y la usamos más ArrayList.

2, mapa

        Map, una estructura de datos de una tabla de mapeo de clave-valor, se utiliza para encontrar valores (elementos) de manera eficiente a través de claves.

3, conjunto

        Si solo necesitamos almacenar claves únicas y no necesitamos almacenar valores mapeados, entonces podemos usar Set.

4, cola

        queue( Queue) es una colección de uso frecuente. QueueDe hecho, implementa una lista ordenada de primeras entradas, primeras salidas (FIFO: First In First Out).

5, Iterador

        Este patrón de recorrer una colección a través de un objeto Iterator se denomina iterador. El beneficio de usar iteradores es que la persona que llama siempre atraviesa los distintos tipos de colección de manera uniforme, sin tener que relacionarse con sus estructuras de almacenamiento internas.

        Si escribimos una clase de colección nosotros mismos y queremos usar for each loop, solo necesitamos cumplir las siguientes condiciones:

        (1) La clase de colección implementa la interfaz Iterable, que requiere que se devuelva un objeto Iterator;
        (2) Itera los datos internos de la colección con el objeto Iterator.

6, Propiedades

PropertiesEs muy simple leer el archivo de configuración         . El archivo de configuración de Java predeterminado es .propertiesla extensión, cada línea está key=valuerepresentada por y el #comienzo de la clase es un comentario. El siguiente es un archivo de configuración típico:

# setting.properties

last_open_file=/data/hello.txt
auto_save_interval=60

        Inside Properties es esencialmente una tabla Hash. 

        Se puede leer desde un archivo o desde un paquete ar.

7, Colecciones

        CollectionsEs una clase de herramienta proporcionada por JDK, que también se encuentra en el java.utilpaquete. Proporciona una serie de métodos estáticos que facilitan la manipulación de varias colecciones.

        crear una colección vacía;

        Cree una colección de un solo elemento;

        crear colecciones inmutables;

        Ordenar/Mezclar, etc.

        Convierta una colección no segura para subprocesos en una colección segura para subprocesos

8. Ejemplos

1. P: ¿Conoce esas clases e interfaces heredadas?

Respuesta:  Clases heredadas: Hashtable, Vector, Stack; no deben seguir utilizándose.

        Interfaz heredada: Enumeración<E>: reemplazada por Iterator<E>.

2. P: ¿Cuál es la diferencia entre Conjunto y Mapa?

Respuesta:  Set contiene solo valores, mientras que Map contiene claves y valores.
        Los conjuntos contienen valores únicos, mientras que Maps puede contener claves únicas con valores duplicados.
        Un Conjunto contiene un solo valor nulo, mientras que un Mapa puede contener una sola clave nula y n valores nulos.


3. Pregunta: ¿List, Set, Map se heredan de la interfaz Collection?

Respuesta:  lista, conjunto es, mapa no es

4. P: ¿Cuál es la principal diferencia entre una matriz y una colección?

Respuesta: (1) Los arreglos siempre tienen un tamaño fijo, es decir, los usuarios no pueden aumentar o disminuir la longitud del arreglo según sus propias necesidades o en tiempo de ejecución, pero en Colecciones, el tamaño se puede cambiar dinámicamente según sea necesario.
        (2) Las matrices solo pueden almacenar objetos del mismo tipo o tipos similares, pero los objetos heterogéneos se pueden almacenar en Colecciones.
        (3) Array no proporciona métodos listos para usar, como clasificación y búsqueda, pero Collection incluye métodos listos para usar.

5. P: ¿Cuál es la diferencia entre Iterator y ListIterator?

Respuesta: Iterator recorre elementos solo hacia adelante, mientras que ListIterator recorre elementos hacia adelante y hacia atrás.

6. P: ¿Cuál es la diferencia entre ConcurrentHashMap, HashMap y HashTable?

Respuesta: (1) Los paquetes son diferentes java.util.HashMap;java.util.concurrent.ConcurrentHashMap;

        (2) ConcurrentHashMap implementa ConcurrentMap y la interfaz Serializable. Esta clase es un HashMap seguro para subprocesos. 

        (3) Hashtable hereda de la clase Dictionary, la matriz subyacente + la implementación de la lista vinculada, ni la clave ni el valor pueden ser nulos, seguros para subprocesos, la forma de lograr la seguridad de subprocesos es bloquear todo el HashTable al modificar los datos, lo cual es ineficiente. y ConcurrentHashMap ha realizado optimizaciones relacionadas.

7. P: Los elementos del Conjunto no se pueden repetir, ¿cómo asegurar que no se repitan?

Respuesta: Los elementos del Set no se pueden repetir, al poner se comparará el hash y el valor, si el hash no existe se permite almacenarlo. Si el valor del código hash es el mismo y el juicio de igualdad es igual, significa que el elemento ya existe, pero no existe; si el valor del código hash es el mismo y el juicio de igualdad no es igual, significa que el elemento ya existe, pero no existe; el elemento no existe y existe;

8. P: ¿Cuál es la diferencia entre ArrayList y LinkedList?

Respuesta: (1) ArrayList usa una matriz dinámica; LinkedList usa una lista doblemente enlazada.

       (2) ArrayList es más adecuado para el almacenamiento y más rápido de leer; LinkedList es más rápido de operar.

        (3) ArrayList proporciona acceso aleatorio; LinkedList no proporciona acceso aleatorio.

9. P: ¿Cuál es la diferencia entre HashMap y TreeMap?

Respuesta: HashMap permanece desordenado mientras que TreeMap permanece ascendente.
        HashMap se implementa mediante una tabla hash y TreeMap se implementa mediante una estructura de árbol.
        HashMap se puede ordenar por clave o valor, y TreeMap se puede ordenar por clave.
        HashMap puede contener claves nulas con múltiples valores nulos, mientras que TreeMap no puede contener claves nulas pero puede tener múltiples valores nulos.

10. P: ¿Cómo sincronizar ArrayList?

答:(1)Collections.synchronizedList

        (2) Usando CopyOnWriteArrayList, CopyOnWriteArrayList es una versión segura para subprocesos de ArrayList.

import java.util.*;  
public class SyncronizeArrayList {  
    public static void main(String args[]) {  
        // Non Synchronized ArrayList   
        List<String> fruitList = new ArrayList<String>();  
  
        fruitList.add("Mango");  
        fruitList.add("Banana");  
        fruitList.add("Apple");  
        fruitList.add("Strawberry");  
        fruitList.add("Pineapple");  
  
        // 同步 ArrayList 
        furitList = Collections.synchronizedList(fruitList);  
  
        // 使用同步块来避免非确定性行为  
        synchronized (fruitList) {  
            Iterator<String> itr = fruitList.iterator();  
            while (itr.hasNext()) {  
                System.out.println(itr.next());  
            }  
        }  
    }  
}  

11. P: ¿Cómo hacer que Java ArrayList sea de solo lectura? 

​Respuesta : obtenga 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 a través de los métodos add(), remove() o set().

12. Pregunta: ¿Cuál de las siguientes afirmaciones es incorrecta? 

    (A) java.util.List se puede utilizar para almacenar un conjunto de elementos ordenados almacenados por posición de índice.
    (B) Los objetos Java y los tipos básicos de datos pueden almacenarse en la colección java.util.Set.
    (C) Cuando un subproceso ejecuta el método sleep() de la clase Subproceso para comenzar a dormir, el bloqueo del objeto ocupado no se liberará.
    (D) Cuando la máquina virtual Java inicializa una clase, si su clase principal no se ha inicializado, su clase principal se inicializará primero.

Respuesta: B. Solo se permite almacenar objetos de Java en la colección java.util.Set y no se permiten datos de tipos básicos de Java.

Supongo que te gusta

Origin blog.csdn.net/bashendixie5/article/details/123598818
Recomendado
Clasificación