You are on page 1of 20

de Datos Algoritmos y Estructura

II

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.

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.

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); }

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.

Mtodos de Operaciones Bsicas:


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

o Iterator iterator(): Devuelve una instancia de Iterator.

Mtodos de Operaciones Masivas:


o boolean containsAll(Collection c): Si contiene todos esos

elementos.
o boolean addAll(Collection c): Aadir todos esos elementos. o boolean removeAll(Collection c): Borra todos esos elementos. o boolean retainAll(Collection c): Borrar todos los elementos menos

esos concretos.
o void clear(): Borrar todos los elementos.

Mtodos de Operaciones con Arreglos:


o Object[ ] toArray(): Devuelve un array con todos los elementos.
o 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.

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:
o public Iterator iterator();

Sus metodos son:


o boolean hasNext(): Si tiene ms elementos.

o Object next(): Devuelve el primer elemento y se queda

apuntando al siguiente. o void remove(): Elimina el primer elemento y se queda apuntando al siguiente.

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:
o public boolean equals(Object elemento);

Existen distintas implementaciones de esta interfaz.

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

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: o Acceder a un elemento concreto de una posicin. o Insertar un elemento en una posicin concreta.

Metodos para Acceso Posicional:


o Object get(int index): Devuelve el elemento de esa posicin. o Object set(int index, Object elemento): Reemplaza el

elemento de esa posicin con ese elemento. o void add(int index, Object elemento): Inserta ese elemento en esa posicin. o Object remove(int index): Elimina el elemento de esa posicin. o boolean addAll(int index, Collection c): Inserta todos esos elementos en esa posicin.

Metodos para Busqueda:


o int indexOf(Object elemento): Devuelve la posicin de la

primera ocurrencia de ese elemento. o int lastIndexOf(Object elemento): Devuelve la posicion de la ultima ocurrencia de ese elemento.

Subcolecciones:
o List subList(int from, int to): Devuelve una lista con los

elementos comprendidos entre ambas posiciones.

Existen distintas implementaciones de esta interfaz.

java.util.ArrayList (SDK 1.2.X.): o Ofrece un tiempo de acceso ptimo cuando dicho acceso es aleatorio. java.util.LinkedList (SDK 1.2.X.): o 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: o Es como el ArrayList pero sincronizando lo que penaliza notablemente el rendimiento. o La sincronizacin es importante cuando mas de un thread (hilo de ejecucin) va a acceder a la colecin.

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.
o public int hashCode();

Metodos para Operaciones Bsicas:


o Object put(Object key, Object value): Insertar una pareja. o Object get(Object key): Accede al valor de una clave. o Object remove(Object key): Eliminar una pareja.

o boolean containsKey(Object key): Comprueba la existencia de

una clave. o boolean containsValue(Object value): Comprueba la existencia de un valor. o int size(): Nmero de parejas. o boolean isEmpty(): Si no contiene ninguna pareja.

Metodos para Operaciones Masivas:


o void putAll(Map t): Aade todas las parejas. o void clear(): Elimina todas las parejas.

Mtodos para Obtencin de Colecciones:


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

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

Collection.

Existen distintas implementaciones de esta interfaz.

java.utilHashMap (SDK 1.2.X.):


o Ofrece un tiempo de acceso ptimo cuando dicho acceso es

aleatorio.

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

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


o Su orden de iteracin es el de insercin.

java.util.TreeMap:
o Su orden de iteracin depende de la implementacin que los

elementos hagan del interfaz java.lang.Comparable. o public int compareTo(Object elemento);

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.

You might also like