Establezca el resumen de la clase de colección de Java:
2. Los elementos de la colección no se pueden repetir. Si agrega un objeto existente utilizando el método add(Object obj), se sobrescribirá el objeto anterior.
¿Por qué utilizar clases de colección?
Cuando no sabe de antemano la cantidad de datos que se almacenarán, o necesita un método más flexible que el mecanismo de acceso a subíndices de matriz, debe utilizar la clase de colección. Las clases de colección se almacenan en el paquete java.util.
Las clases de colección almacenan referencias a objetos, no a los objetos en sí. Para facilitar la expresión, llamamos a los objetos de la colección referencias a los objetos de la colección.
Existen tres tipos principales de colecciones: conjuntos, listas y mapas.
(1) Conjunto
El conjunto es el conjunto más simple. Sus objetos no están ordenados de una manera particular, sino que simplemente se añaden a la colección, como si se guardara algo en un bolsillo.
El acceso y la operación de los miembros de la colección se completan mediante referencias a los objetos de la colección, por lo que no puede haber objetos duplicados en la colección.
También hay muchas variantes de colecciones que pueden implementar funciones como ordenar, como TreeSet. La operación de agregar un objeto a una colección se convertirá en insertarlo en una secuencia ordenada de objetos de acuerdo con ciertas reglas de comparación. . Implementa la interfaz SortedSet, que agrega un método de comparación de objetos. Al iterar sobre los objetos de la colección, podemos obtener una colección de objetos en orden ascendente.
(2) Lista
La característica principal de una lista es que sus objetos se almacenan de forma lineal, sin ningún orden específico, sólo un principio y un final. Por supuesto, no es lo mismo que una colección completamente desordenada.
Las listas se representan en estructuras de datos como matrices y vectores, listas enlazadas, pilas y colas.
La clase de colección que implementa la lista se usa a menudo en nuestro trabajo diario. Las siguientes notas la presentarán en detalle.
(3) Mapeo
El mapeo es obviamente diferente de los conjuntos o listas. Cada elemento del mapeo es un par. Cada objeto almacenado en el mapa tiene un objeto clave asociado, y la clave determina dónde se almacena el objeto en el mapa. Al recuperar un objeto, debe proporcionar la clave correspondiente, como si buscara una palabra en un diccionario. Las palabras clave deben ser únicas.
La palabra clave en sí no puede determinar la ubicación de almacenamiento del objeto. Debe ser procesada mediante tecnología hash para generar un valor entero, llamado código hash.
El código hash se utiliza normalmente como un desplazamiento relativo al inicio de la región de memoria asignada al mapa, determinando así dónde se almacena el par clave/objeto. Idealmente, el proceso de hash debería producir valores distribuidos uniformemente dentro de un rango determinado, y cada palabra clave debería obtener un código hash diferente. Hay * * * 13 clases en java.util que se pueden usar para administrar objetos de colección. Admiten colecciones como conjuntos, listas o mapas. A continuación se muestra una breve introducción a estas clases.
Configuración:
HashSet: use HashMap para implementar un conjunto. Aunque una colección se define como desordenada, debe haber alguna forma de encontrar un objeto de manera muy eficiente. El uso de un objeto HashMap para implementar el almacenamiento y la recuperación de colecciones se implementa dentro de un tiempo fijo.
TreeSet: implementación de una colección que ordena los objetos de la colección en orden ascendente. Esto significa que el primer iterador obtenido de un objeto TreeSet proporcionará los objetos en orden ascendente. La clase TreeSet utiliza un diagrama de árbol.
Lista:
Vector: Implementa una tabla similar a un array, aumentando automáticamente la capacidad para acomodar los elementos que necesitas. Utilice subíndices para almacenar y recuperar objetos como en las matrices estándar. También puedes utilizar iteradores para recuperar objetos de vectores. Vector es la única clase de contenedor sincronizada. El rendimiento también es bueno cuando dos o más subprocesos acceden simultáneamente.
Stack: ¿Esta clase se deriva de Vector y agrega un método para implementar la pila? Estructura de almacenamiento de último en entrar, primero en salir.
LinkedList: Implementa una lista enlazada.
Las listas enlazadas definidas por esta clase también se pueden utilizar como pilas o colas.
ArrayList: Implementa un array cuyo tamaño es variable y al que se puede acceder como una lista enlazada. Proporciona una funcionalidad similar a la clase Vector, pero no está sincronizada.
Mapeo:
Hashtable: para implementar una imagen, todas las claves deben ser no nulas. Para funcionar de manera eficiente, la clase que define la clave debe implementar el método hashcode() y el método equal(). Esta clase es una herencia de la implementación anterior de Java y, a menudo, se puede utilizar mejor con otras clases que implementen imágenes.
HashMap: implementa una imagen, permite almacenar objetos vacíos y permite que la clave esté vacía (dado que la clave debe ser única, por supuesto solo puede haber una).
WeakHashMap: Implementa un mapa donde, normalmente, si un objeto ya no hace referencia a una clave, el par clave/objeto se descartará. Esto contrasta con HashMap, donde las claves de la imagen mantienen la vida útil del par clave/objeto, aunque el programa que utiliza la imagen ya no tiene una referencia a la clave y, por lo tanto, no puede recuperar el objeto.
TreeMap: Para implementar dicha imagen, los objetos se organizan en orden ascendente por clave.
Set y List se extienden desde la colección de la interfaz pública, por lo que se puede hacer referencia a ellos mediante variables del tipo de colección. Esto significa que se puede hacer referencia a cualquier conjunto de listas o colecciones de esta manera, excepto las clases asignadas (pero no excluidas por completo, ya que las listas se pueden obtener de mapas). Por lo tanto, coloque un
para pasar la lista o colección La forma estándar de proporcionar métodos es utilizar parámetros de tipo colección.
¿Cuál es mejor, Vector o ArrayList y por qué?
Para responder a esta pregunta, no podemos generalizar. A veces es mejor usar vectores, a veces es ArrayList y otras veces ninguna de las dos es la mejor opción. No puedes esperar una respuesta simple de sí, porque depende de para qué los uses. Hay cuatro factores a considerar aquí:
(1) API
(2) Procesamiento de sincronización
(3) Crecimiento de datos
(4) Cómo utilizar
Los siguientes cuatro aspectos se discutirán uno por uno