1. Contenedores y colecciones
Los contenedores o colecciones son clases que te permiten almacenar y procesar varios objetos a la vez. Ya conoces dos tipos de contenedores: matrices y listas.
Java tiene varias docenas de colecciones, cada una de las cuales almacena elementos a su manera específica. Éstos son algunos de ellos:
Recopilación | Clase | Descripción |
---|---|---|
|
|
Lista |
|
Lista enlazada | |
|
Vector | |
|
Pila | |
|
|
Colocar |
|
||
|
||
|
|
Cola |
|
||
|
|
Mapa/Diccionario |
|
||
|
Los nombres son algo ambiguos aquí. En la mayoría de los lenguajes de programación, todas estas estructuras de datos se denominan colecciones, pero no en Java. En Java, algunas de estas clases implementan la Collection
interfaz, mientras que otras no.
En consecuencia, las colecciones se dividen en colecciones en sentido amplio y colecciones en sentido estricto (solo aquellas que implementan la Collection
interfaz).
Entonces, para evitar confusiones, cuando hablamos de colecciones nos referimos al sentido estricto de la palabra, es decir, clases que implementan la Collection
interfaz. Los tipos y List
son todas colecciones. Las colecciones en sentido amplio se denominan generalmente contenedores . Estos incluyen tipos como y matrices.Set
Queue
Map
2. HashSet
colección
La HashSet
clase es una colección de conjuntos típica. En muchos sentidos, es similar a la ArrayList
clase. En cierto modo, es una versión más primitiva.
Puede crear un HashSet
objeto usando una declaración como:
HashSet<Type> name = new HashSet<Type>();
Donde Type
es el tipo de los elementos que almacenaremos en la HashSet
colección.
La HashSet
clase tiene métodos como este:
Método | Descripción |
---|---|
|
Agrega el value elemento a la colección. |
|
Elimina el value elemento de la colección. Devuelve true si hubo tal elemento |
|
Comprueba si la colección tiene un value elemento. |
|
Borra la colección, eliminando todos los elementos. |
|
Devuelve el número de elementos de la colección. |
Aquí hay un ejemplo del uso de un conjunto.
Escribamos un programa que se despide del usuario si él o ella dice hola. Para hacerlo más interesante, le daremos a nuestro programa la capacidad de entender "hola" en varios idiomas.
Código | Nota |
---|---|
|
Cree un HashSet objeto que almacene String elementos. Agregamos saludos en varios idiomas a la set variable. Leer una línea desde la consola. Si la cadena está en nuestro conjunto de saludos, entonces nos despedimos. |
3. Establecer
La Set
colección está diseñada para albergar un conjunto de elementos. Por eso se llama Set
(conjunto). Esta colección tiene tres características.
Operaciones en un conjunto
Solo hay tres cosas que puede hacer con un conjunto: agregar elementos al conjunto, eliminar elementos del conjunto y verificar si el conjunto contiene un elemento específico. Eso es todo.
Sin orden
Los elementos de esta colección no tienen índices. No puede obtener un elemento por un índice o escribir un valor en una colección en un índice específico. Un conjunto no tiene get()
ni set()
métodos.
Elementos únicos
Todos los elementos de un conjunto son únicos. A diferencia de una lista, un conjunto puede contener solo una instancia de un elemento. Un objeto está en el conjunto o no; no hay una tercera opción. No puede agregar negro tres veces a un conjunto de colores. O está ahí o no está.
Encontrar elementos
Cuando agrega un nuevo elemento, elimina un elemento o verifica si un elemento existe en un conjunto, se realiza una búsqueda del elemento en el método. El elemento pasado se compara con los elementos de la colección primero por hashCode()
, y luego, si los valores devueltos por hashCode()
coinciden, por equals()
.
4. Comparar colecciones: List
vsSet
Comparemos dos tipos de colecciones: List
y Set
Veremos las principales diferencias, cuando una es más ventajosa que la otra, y viceversa.
Intentemos comparar List y Set usando juguetes como ejemplo.
La List
colección (lista) es como un conjunto de juguetes dispuestos a lo largo de la pared en una sala de juegos. Puede agregar un juguete al final de la lista. Si realmente lo necesita, también puede insertarlo en el medio (pero algunos de los juguetes existentes deberán moverse).
Cada juguete tiene un índice. Puede hacer referencia a un juguete por su índice y también reemplazar el juguete número 7 con el juguete número 13. Puede eliminar el juguete número 4 de la lista. Finalmente, puedes aprender el índice de cada juguete en la lista.
La Set
colección (set) es más como una pila de juguetes en el medio del piso. Puede agregar un juguete a la pila y puede quitar un juguete de la pila. Pero estos juguetes no tienen un índice fijo asociado con ellos.
O suponga que está eligiendo un juguete para el cumpleaños de su hijo. Primero, piensa si ya tiene el juguete. Todos los juguetes que ya tiene forman un conjunto de juguetes que no elegirás comprar.
Desde este punto de vista, puede ver que no importa el orden de los juguetes en un conjunto de "juguetes que ya existen", ni si el cumpleañero tiene dos instancias de un juguete en particular. No le interesa el orden ni el número de cada juguete. Lo que te importa es conocer cada juguete único que existe en el set.
Para casos como este, necesita la Set
colección. Su implementación más popular es la HashSet
clase.
GO TO FULL VERSION