0% encontró este documento útil (0 votos)
6 vistas18 páginas

Introducción a Colecciones en Java

Este documento describe las colecciones en Java, que son grupos de objetos almacenados conjuntamente. Explica las principales interfaces y clases de colecciones como List, Set y Map.

Cargado por

adrigmg2
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas18 páginas

Introducción a Colecciones en Java

Este documento describe las colecciones en Java, que son grupos de objetos almacenados conjuntamente. Explica las principales interfaces y clases de colecciones como List, Set y Map.

Cargado por

adrigmg2
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Colecciones en Java

Definición
Una colección en Java es un grupo de objetos
almacenados conjuntamente.
□ Las colecciones son un conjunto de interfaces y clases genéricas que
implementan estos interfaces con distintas implementaciones: arrays,
listas encadenas, árboles, tablas hash ( tablas asociativas),etc.

□ Ofrecen un gran número de métodos que permiten trabajar con


almacenes de objetos dinámicos sin necesidad que el programador
tenga que implementar sus propias estructuras dinámicas.
• La mayoría están en el paquete [Link]

Interfaz Collection<T>

Interfaz List<T>

Interfaz Set<T>

Interfaz Map<K,T>
2
Características

□ Todas las colecciones son clase genéricas. Clase <Tipo>


□ Los tipos abstractos de datos se definen como interfaces.
□ Un mismo interfaz puede ser implementados por distintas
clases:
Ejemplo: Si quiero usar el Interfaz List puedo elegir entre
dos implementaciones: LinkedList o ArrayList.
Internamente se utilizará una lista encadenada o un tabla,
aunque tengamos los mismos métodos para utilizar.

3
Java Collections Framework
Listas
Secuencia (con duplicados)
Colecciones Importa las posiciones
Elementos individuales. Conjuntos
Búsqueda por elemento Secuencia (sin duplicados)
No importa orden

Contenedores Interfaz auxiliares


Iterator
Comparable
Comparator

Arrays asociativos (Maps)


Asocian claves con valores
Búsqueda por clave muy rápida

1
18/Mayo/2012 7. Librerías de Java 4
Principales clases e Interfaces

5
Características
Interfaces Principales:
□ Collection: Interfaz principal define métodos para tratar una
colección genérica de elementos.

Set: Colección de elementos que no admite repetición.

List: admite elementos repetidos y mantiene el orden de
inserción.
□ Map: Conjunto de pares, clave/valor, sin repetición de claves.
Interfaces auxiliares: Permiten recorrer o ordenar colecciones
□ Iterator: Interfaz de soporte utilizado para recorrer una colección y
para borrar elementos.
□ Comparable: interfaz de soporte que declara el método
compareTo() que permite ordenar las diferentes colecciones según
un orden natural.
□ Comparator: interfaz de soporte que declara el método compare()
y se utiliza en lugar de Comparable: cuando se desea ordenar 6
objetos por distintos atributos que orden natural
Interfaz Collection<T>

□ Define las operaciones comunes a todas las colecciones de Java.


Tipos básicos de colecciones son (subtipos de Collection<T>) :

■ Listas, definidas en la interfaz List<T>


Dos implementaciones más comunes:
ArrayList → Array dinámico
LinkedList → Lista encadenada

■ Conjuntos, definidos en la interfaz Set<T>


Dos implementaciones más comunes:
HashSet → Tabla asociativa
TreeSet → Árbol ordenado

7
Interfaz Collection<T>

Principales métodos:
boolean add(T)
boolean addAll(Collection c)
void clear()
boolean contains(T)
boolean isEmpty()
boolean remove(T)
boolean removeif(condición)
int size()
Iterator iterator()
T[] toArray() 8
Interfaz List<T> Listas

La interfaz List<T> define secuencias de elementos a los
que se puede acceder atendiendo a su posición.

□ Las posiciones van de 0 a size()-1.


■ El acceso a una posición ilegal produce la excepción
IndexOutOfBoundsException
□ El método add(T e) añade al final de la lista.
□ Añade a las operaciones de Collection métodos
de acceso por posición como:
■ T get (int index)
■ T set (int index, T element)
■ void add (int index, T element)
■ T remove (int index)

9
Clases que implementan List<T>
□ ArrayList<T>
■ Implementación basada en arrays redimiensionables.
■ Operaciones de inserción y borrado ineficientes.
■ Operaciones de modificación y consulta rápidas.

□ LinkedList<T>
■ Implementación basada en listas doblemente enlazadas
■ Inserciones y modificaciones rápidas, especialmente en el
principio y el final:
□ Métodos no disponibles en List<T>: addFirst,
addLast, removeFirst, removeLast
■ Acceso aleatorio a elementos ineficiente.
■ Acceso eficiente al principio y al final de la lista:
□ getFirst y getLast

10
Interfaz Set<T> Conjuntos
□ La interfaz Set<T> define conjuntos de elementos no repetidos.
No tiene método propios distintos de Collections
□ Implementaciones de conjuntos:
■ HashSet<T>:
□ Guarda los elementos del conjunto en una tabla hash.
□ Para evitar la inserción de elementos repetidos, la igualdad de los
objetos se comprueba comparando los hashCode, si son iguales se
compara con equals.
■ TreeSet<T>:
□ Implementación de conjuntos ordenados basada en árboles
binarios balanceados.

□ Las operaciones de búsqueda y modificación son más lentas en


TreeSet que en HashSet

11
Colecciones: Recorrido for each
□ El recorrido for each permite recorrer colecciones como
un array normal.
□ Es la opción más común de recorrido.
Ejemplo: Recorrer una lista para sumar su valores:

public double posicionGlobal(List<Deposito> depositos) {


double posicion = 0;
for (Deposito deposito : depositos) {
posicion += [Link]();
}
return posicion;
}

12
Colecciones: Recorrido con Iteradores
□ Interfaz Iterator<T>:
■ hasNext(): indica si quedan elementos en la iteración.
■ next(): devuelve el siguiente elemento de la iteración.
■ remove(): elimina el último elemento devuelto por el iterador.

public double borra(List<Deposito> depositos {


Iterator<Deposito> it = [Link]();
while ([Link]()) {
Deposito deposito = [Link]();
if ([Link]() < 1000)
[Link](); // Un Iterator permite borrar elementos.
}
}

13
Interfaz Map<K,V> Mapas/Diccionarios
□ La interfaz Map<K,V> define el tipo de datos que
representa pares <clave, valor>
■ Un mapa no puede tener claves duplicadas.
■ Cada clave sólo puede tener un valor asociado,
■ Pero un mismo valor puede tener varias claves.

□ Un mapa no es una colección, sin embargo contiene


colecciones:
■ Conjunto de claves (Set<K>)
■ Colección de valores (Collection<V>)
■ Conjunto de pares <clave, valor> ([Link]<K,V>)

□ Las implementaciones disponibles son:


■ HashMap<T>: implementación basada en una tabla hash
■ TreeMap<T>: implementación basada en árboles balanceados.
□ Las claves están ordenadas .

14
Interfaz Map<K,V>
□ Métodos básicos:
■ V put(K clave, V valor): inserta una asociación en el
mapa. Retorna el valor de la antigua asociación, si la hubiera.
■ V get(clave): retorna el valor asociado a una clave. Si la
asociación no existe, devuelve null.
■ boolean containsKey(key): indica si existe una clave.
■ V remove(clave): elimina el objeto asociado a la clave,
devuelve el objeto eliminado o null si no existe.
■ Para realizar recorridos:
□ Set<K> keySet(): devuelve el conjunto de claves.
□ Collection<V> values(): devuelve la colección de
valores.
□ Set<[Link]<K, V>> entrySet(): devuelve el conjunto
de todas las asociaciones, [Link]<K, V>:
■ getKey(): consultar la clave.
■ getValue(): consultar el valor. 15
Recorrido de un Mapa
□ Para recorrer un mapa tenemos que obtener una colección: el
conjunto de claves, la lista de valores, o el conjunto de clave/valor
y recorrerla la colección obtenida de forma habitual.
□ [Link]("\nLista de todos las claves:");
// Obtener todas las claves SET
for (Integer clave: [Link]()) {
[Link](">"+clave);
}

[Link]("\nLista de todos los valores:");


// Obtener todos los valores: Collections
for (Alumno alum: [Link]()) {
[Link](">"+alum);
}

[Link]("\nLista de todos las entradas: clave -> valor");


// Obtener el conjunto de entradas pares clave - valor
for ([Link] entrada: [Link]() ) {
[Link](">"+ [Link]() +":"+[Link]());
}
16
Ordenación de colecciones y Mapas
□ Las colecciones y los mapas pueden ordenar automáticamente
sus elementos si elegimos una implementación adecuada, esto
siempre implica un menor rendimiento en altas, bajas y
modificaciones: TreeSet o TreeMap.
□ Las listas se puede ordenar por el método:
[Link](milista)
□ Si queremos obtener los valores de un conjunto normal o de un
map, podemos obtener su lista de valores y ordenar esta lista
por el método anterior.

17
Ordenación de colecciones y Mapas
□ Podemos utilizar con distintos parámetros:
□ [Link](milista) Ordena siguiendo el orden natural del los
objetos que almacena. Es decir según el método compareTo. Si
almacenan objetos definidos por el programador debemos
implementar el interfaz Comparable.
□ [Link](milista, micomparator). Ordena siguiendo el
criterio que se indique el objeto comparador. Este objeto implementa
el interfaz Comparator definiendo la función compare.
□ [Link](milista, expresión lambda). Indicar una
expresión lambda (valores) → (operaciones) (operaciones) que devuelve un
entero. Este es el método más moderno y flexible.

Programación rientada a Objetos 18

También podría gustarte