Você está na página 1de 21

Collections

Algoritmos y Estructura de Datos II

Introduccin
Hay veces que los arreglos no son adecuados o suficientes por caractersticas del problema que hay que resolver. Puede ser que se necesite almacenar elementos, pero que no se sepa cuntos elementos se van a tener, en este caso, un arreglo con numero fijo de elementos no es adecuado. Para solucionar estos problemas surgen las tpicas agrupaciones de elementos, pilas, colas, tablas hash, conjuntos, etc.

Collections
Para estos tipos de agrupaciones, Java proporciona las llamadas Collectiones (Colecciones) que proporcionan varias abstracciones para conjuntos (Set), listas (List), tablas hash (Map), etc. La jerarqua Collection.Collection es una interfaz no una clase; la diferencia entre clase e interfaz es que una interfaz es una clase que no tiene implementados sus mtodos.

Collections
Public interfaz Collection{ boolean add(Object o); boolean addAll(Collection c); void clear(); boolean contains(Object o); boolean containsAll(Collection c); boolean equals(Object o); int hashCode(); boolean isEmpty(); Iterator iterator(); boolean remove(Object o); boolean removeAll(Collection c); boolean retainAll(Collection c); int size(); Object[ ] toArray(); Object[ ] toArray(Object[ ] a); }

Cdigo 01

Collections

Collections
Todas las colecciones se encuentran en el paquete java.util.* java.util.Collection es la raiz de la jerarqua de las colecciones Existirn especializaciones que permitan elementos duplicados o no, que permitan ordenar los elementos o no, etc. Esta clase contiene la definicin de todos los mtodos genricos que deben implementar las colecciones.

Collections
Mtodos de Operaciones Bsicas:
int size(): Nmero de elementos que contiene.
boolean isEmpty(): Si no contiene ningun elemento. boolean contains(Object elemento): Si contiene ese elemento. boolean add(Object elemento): Aadir un elemento. boolean remove(Object elemento): Borrar un elemento.

Iterator iterator(): Devuelve una instancia de Iterator.

Collections
Mtodos de Operaciones Masivas:
boolean containsAll(Collection c): Si contiene todos esos elementos.
boolean addAll(Collection c): Aadir todos esos elementos. boolean removeAll(Collection c): Borra todos esos elementos. boolean retainAll(Collection c): Borrar todos los elementos menos esos concretos.

void clear(): Borrar todos los elementos.

Collections
Mtodos de Operaciones con Arreglos:
Object[ ] toArray(): Devuelve un array con todos los elementos.
Object[ ] toArray(Object a[ ]): Devuelve un array con todos los elementos. El tipo ser el del array enviado.

Las colecciones no permiten el uso de tipos primitivos; por lo que, si necesitamos trabajar con ellos habr qeu usar los Wrappers de tipos primitivos.

Iterator
El interfaz Iterator representa un componente que permite iterar sobre los elementos de una colecin. Todas las colecciones ofrecen una implementacin de Iterator por medio del mtodo:
public Iterator iterator();

Sus metodos son:


boolean hasNext(): Si tiene ms elementos. Object next(): Devuelve el primer elemento y se queda apuntando al siguiente. void remove(): Elimina el primer elemento y se queda apuntando al siguiente.

Set
El interfaz Set hereda del interfaz Collection. Pero no aade la definicin de ningn mtodo nuevo. Representan colecciones que no permiten tener elementos duplicados. Para saber si un elemento est duplicado, hace uso del mtodo:
public boolean equals(Object elemento);

Existen distintas implementaciones de esta interfaz.

Set
java.util.HashSet (SDK 1.2.X.): Ofrece el acceso ms rpido cuando dicho acceso es aleatorio. Su orden de iteracin es impredecible. java.util.LinkedHashSet (SDK 1.4.X.): Su orden de iteracin es el orden de insercin. java.util.TreeSet (SDK 1.2.X.): Su orden de iteracin depende de la implementacion que los elementos hagan del interfaz java.lang.Comparable.
public int compareTo(Object elemento);

List
El interfaz List hereda del interfaz Collection. Representan colecciones con elementos en secuencia. Es decir, con orden. Permite tener duplicados. Es accesible mediante indice, de manera que se puede: Acceder a un elemento concreto de una posicin. Insertar un elemento en una posicin concreta.

List
Metodos para Acceso Posicional:
Object get(int index): Devuelve el elemento de esa posicin. Object set(int index, Object elemento): Reemplaza el elemento de esa posicin con ese elemento. void add(int index, Object elemento): Inserta ese elemento en esa posicin. Object remove(int index): Elimina el elemento de esa posicin. boolean addAll(int index, Collection c): Inserta todos esos elementos en esa posicin.

List
Metodos para Busqueda:
int indexOf(Object elemento): Devuelve la posicin de la primera ocurrencia de ese elemento. int lastIndexOf(Object elemento): Devuelve la posicion de la ultima ocurrencia de ese elemento.

Subcolecciones:
List subList(int from, int to): Devuelve una lista con los elementos comprendidos entre ambas posiciones.

Existen distintas implementaciones de esta interfaz.

List
java.util.ArrayList (SDK 1.2.X.): Ofrece un tiempo de acceso ptimo cuando dicho acceso es aleatorio. java.util.LinkedList (SDK 1.2.X.): Ofrece un tiempo de acceso ptimo cuando dicho acceso es para aadir o eleminar elementos del comienzo y final de la lista (tipico para pilas). java.util.Vector: Es como el ArrayList pero sincronizando lo que penaliza notablemente el rendimiento. La sincronizacin es importante cuando mas de un thread (hilo de ejecucin) va a acceder a la colecin.

Map
El interfaz Map no hereda del interfaz Collection. Representa colecciones con parejas de elementos: clave y valor. No permite tener claves duplicadas. Pero si valores duplicados. Para calcular la colocacin de un elemento se basa en el uso del mtodo.
public int hashCode();

Map
Metodos para Operaciones Bsicas:
Object put(Object key, Object value): Insertar una pareja. Object get(Object key): Accede al valor de una clave. Object remove(Object key): Eliminar una pareja. boolean containsKey(Object key): Comprueba la existencia de una clave. boolean containsValue(Object value): Comprueba la existencia de un valor. int size(): Nmero de parejas. boolean isEmpty(): Si no contiene ninguna pareja.

Map
Metodos para Operaciones Masivas:
void putAll(Map t): Aade todas las parejas. void clear(): Elimina todas las parejas.

Mtodos para Obtencin de Colecciones:


public Set keySet(): Devuelve las claves en un Set.

public Collection values(): Devuelve los valores en una Collection.

Existen distintas implementaciones de esta interfaz.

Map
java.utilHashMap (SDK 1.2.X.):
Ofrece un tiempo de acceso ptimo cuando dicho acceso es aleatorio.

java.util.Hashtable:
Es la versin sincronizada de HashMap.

java.util.LinkedHashMap (SDK 1.4.X.):


Su orden de iteracin es el de insercin.

java.util.TreeMap:
Su orden de iteracin depende de la implementacin que los elementos hagan del interfaz java.lang.Comparable. public int compareTo(Object elemento);

Arreglos vs Colecciones

Arreglo Tamao esttico. Su tamao se conoce mediante el atributo length. Puede almacenar tanto tipos primitivos como tipos complejos. Solo puede albergar elementos de un tipo.

Coleccin Tamao dinmico. Su tamao se conoce mediante el mtodo size(). Solo puede almacenar tipos complejos. Puede albergar elementos de distinto tipo.

Você também pode gostar