1. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES
1. Definición y ventajas
2. Interfaces de Colección predefinidos
• Collection
• List
• Set
• Map
3. Clases colección predefinidas
• Implementación de List: ArrayList, LinkedList
• Implementación de Set: HashSet
• Implementación de Map: HashMap
• Clases de soporte a las colecciones: Collections, Arrays.
4. Colecciones personalizadas
• AbstractList
• AbstractSet
1
2. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Concepto
• Coleccion: objeto que agrupa múltiples elementos (objetos).
• Utilidad: almacenar, recuperar, manipular conjuntos de datos.
• Ejemplos reales de colecciones:
asignaturas de un curso
controles de una ventana
Líneas de una factura
Contactos de una agenda
• Framework de colecciones: arquitectura unificada para representar y manipular
colecciones:
• Interfaces: especifican métodos para manipular colecciones, pero no su implementación.
• Implementaciones: clases que implementan los interfaces de colección.
• Algoritmos:
– codificados en métodos.
– Manipulan las estructuras de datos internas de las colecciones
– Son algoritmos habituales en estructuras estáticas y dinámicas
– ordenación, búsqueda binaria, inserción en listas, …
• Ventaja: proporciona un métodos estándar de manipulación de grupos de objetos
2
3. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Interfaces
Jerarquía de interfaces
– Collection : Raiz de la jerarquía de interfaces, no tiene implementaciones.
– List: También llamadas secuencias. Colecciónes indexadas. Admiten duplicados.
– Set: Representación matemática de conjunto. No indexada. No admite duplicados.
– SortedSet : Conjuntos ordenados.
– Queue: Representaciones de estructuras FIFO-LIFO. No admite nulos.
– Map: Almacenamientos de parejas valor-clave. La clave equivale al índice. No admite
clasves duplicadas. También se conocen como diccionarios.
– SortedMap: Mapa ordenado según sus claves.
Referencia completa: http://download.oracle.com/javase/6/docs/technotes/guides/collections/index.html
3
4. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Interfaces
Interface Collection
– size() : número de elementos.
– isEmpty () : ´devuelve true si la colección no tiene elementos
– contains ( …) : true si existe un elemento e tal que (o==null) ? e==null : o.equals(e)
– add (... ): añade el elemento a la colección. Devulve true si se agregó.
– remove ( ... ) : elimina el objeto de la lista si existe.
– iterator ( ) : devuelve un objeto que implementa Iterator.
– //optional: lanzan “UnsupportedOperationException” si no estan implementados
– //Bulk operations: métodos que “operan de colección a colección” en una sola llamada
4
5. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Interfaces
Interface List
– get( … ) : devuelve el elemento en la posición index. 0 <= index < size()
– set( … ) : coloca elemento en la posición index. 0 <= index < size()
– add( … ): inserta al final
– add (index, element): inserta en la posicion index desplazando si es necesario. 0 <= index <= size()
– remove (index) : Devuelve y elimina de la lista elemento en la posicion index. 0 <= index < size()
– addAll (index, Collection): añade la colección a la lista a partir de la posición expecificada.
– int indexOf ( ): devuelve la posición del primer elemento igual o.
– int indexOf ( ): devuelve la posición del último elemento igual o.
– List< E > subList (from, to) : devuelve una sublista desde la posicion “from” hasta la posición “to” exclusive.
5
6. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Interfaces
Interface Set
– Todos los métodos tienen el mismo comportamiento que el interface Collection, salvo:
Los métodos add NO admiten insertar elementos DUPLICADOS .
6
7. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Interfaces
Interface Map
– Mapa: es un objeto que almacena parejas key-value.
– No contiene keys (claves) duplicadas
– Cada clave debe tener al menos un valor.
– Modela el concepto de “función matemática”.
– K: Tipo de dato de la clave de cada elemento.
– V: Tipo de dato del valor de cada elemento.
7
8. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Interfaces
Interface Map
– V put(K key, V value): asocia value a key. Si ya existia Key sustituye value. Devuelve value antiguo.
– V get(Object key): recupera el value asociado a key.
– V remove(Object key): elimina el “mapeo” (clave-valor) asociado a la key.
– boolean containsKey(Object key): devuelve true si el mapa contiene la clave
– boolean containsValue(Object value); devuelve true si el mapa contiene el valor (equals).
– int size(): devuelve el número de elementos contenidos en el mapa.
– boolean isEmpty(): devuelve true si el mapa no contiene elementos.
– // Bulk operations
– void putAll(Map<? extends K, ? extends V> m): utiliza put para todos los mapeos del parametro.
– void clear(): borra todos los elementos del mapa
– // Collection Views
– public Set<K> keySet(); devuelve un Set de “claves” (key).
– public Collection<V> values(); devuelve una Colección de Values (valores).
– public Set<Map.Entry<K,V>> entrySet(): devuelve un Set de objetos que implementan entradas (parejas
clave-valor o Map.Entry) del mapa.
– // Interface para entrySet
– public interface Entry {
– K getKey();
– V getValue();
– V setValue(V value);
–}
8
9. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Implementaciones. List
• ArrayList:
• Almacena internamente un vector dinámico.
• Tiempo constante en acceso a los elementos. Se calcula la posición.
• Borrados mas costosos.
• Métodos específicos:
• ArrayList (capacity): construye el array con una capacidad inicial
• ArrayList(Collection): crea el array list desde una colección
• ensureCapacity (capacity): incrementa la capacidad si es necesario hasta capacity.
• trimToSize(). Reduce la capacidad hasta el número de elementos (size).
• Vector: Implementación equivalente a ArrayList, pero sincronizada.
• LinkedList:
• Almacena los elementos en una lista enlazada
• Tiempo variable en acceso a los elementos. Busqueda secuencia.
• Tiempo constante en operaciones de inserción y borrado.
• Implementa los interfaces List, Queue y Deque
• Se puede emplear crear estructuras FIFO (Cola) y LIFO (Pila).
9
10. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Implementaciones. Map
• Map:
• Implementa todos los métodos del Interface Map, incluso los opcionales.
• Admite claves y valores nulos.
• Internamente almacena los elementos en un array de objetos Map.Entry.
• Proporciona tiempo de acceso constante con las funciones get, put utilizando
para ello la función hash.
• Capacity: Número de “huecos” para ubicar las Map.Entry.
• Factor de carga: % de llenado del mapa antes que crezca su capacidad. Por
defecto 75%.
• Implementación no sincronizada.
• Multimapa: Mapa cuyos values son colecciones.
• TreeMap: Mapa que almacena sus elementos en una estructura Arbol.
• LinkedHashMap: Mapa que almacena sus elementos en una lista enlazada.
10
11. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Implementaciones. Set
• HashSet:
• Internamente envuelve un HasMap para evitar que los elementos se repitan
• No garantiza el orden de los elementos.
• Es una implementación no sincronizada
• Métodos específicos:
• HashSet ( ): Crea un Set vacío.
• HahsSet (Collection ): Crea un HashSet a partir de una Collection.
• HashSet (InitialCapacity): Crea un HashSet con una capacidad inicial.
• TreeSet: Almacena un Set en un árbol.
• LinkedHashSet: Almacena un Set en una lista enlazada.
11
12. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Clase Collections
• Collections: Clase que proporciona métodos para manipular colecciones.
• Metodos más comunes
• addAll : Añade a una colección una lista de elementos que se pasan por parámetro.
• binarySearch: Realiza busqueda binaria. Permite pasar por parámetro un Comparator.
• disjoint : devuelve true si dos colecciones (parametros) no tienen elementos en común.
• fill: reemplaza todos los elementos de la colección por un objeto especificado (parámetro)
• frecuency: devuelve el numero de repeticiones de un objeto dentro de una colección
• list: devuelve un ArrayList con los elementos de la colección.
• max: devuelve el mayor objeto de la colección. Se puede pasar un Comparador por parámetro.
• min: devuelve el menor objeto de la colección.
• newSetFromMap: Devuelve un set “envolviendo” el mapa enviado por parámetro.
• replaceAll: reemplaza cada ocurrencia de una valor de la colección por un valor nuevo.
• shuffle: permita aleatoriamente los elementos de una lista.
• sort: ordena los elementos de la lista. Se puede pasar un comparador por parámetro.
• swap: intercambia dos elementos de una lista. Se indican las posiciones por parámetro.
12
13. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Colecciones personalizadas
• Custom Collections: Son colecciones que implementan los interfaces del Framework de colecciones
o heredan de clases colección abstractas.
• Clases abstractas de colección: Incorporan implementaciones de los métodos de interfaces de
colección pero no todos. Las clases personalizadas pueden reutilizar su implementación heredando de
ellas.
• AbstractCollection : Una colección que no es ni Set, ni List. Como mínimo proporcionar
iterator y size().
• AbstractSet: Implementa un Set. Su uso es idéntico a AbstractCollection.
• AbstractList: Una lista que envuelve un espacio de almacenamiento aleatorio (un array).
• Acceso a los elementos: get (obligatorio). set, remove y add opcionales.
• AbstractSequentialList : Una lista que envuelve un espacio de almacenamiento de acceso
secuencial (lista enlazada).
• Como mínimo proporcionar listIterator y el método size().
• AbstractQueue: Como mínimo debe proporcionar offer, peek, poll, y size( ) y un iterator que
soporte remove.
• AbstractMap: Como mínimo debe proporcionar la vista entrySet. Si es modificable
proporcionar también put.
13
14. C.F.P.E. JUAN XXIII – ALCORCÓN
Departamento de Desarrollo de Aplicaciones Informáticas
COLECCIONES. Colecciones personalizadas
Clase personalizada heredando de AbstractList
14