Colecciones de Java Exposicion - Copia

6
TIPOS DE COLECCIONES Las colecciones son una especie de arrays de tamaño dinámico. Para usarlas haremos uso del Java Collections Framework (JCF), el cual contiene un conjunto de clases e interfaces del paquete java.util para gestionar colecciones de objetos. - Collection Contenedor simple de objetos no ordenados. Los duplicados son permitidos int size() boolean empty() boolean contains(Object elem) Iterator iterator() Object[] toArray() Object[] toArray(Object dest[]) boolean add(Object elem) boolean remove(Object elem) void clear() - Listas: Una lista ordenada, o secuencia. Normalmente permiten duplicados y tienen acceso aleatorio (es decir, puedes obtener elementos alojados en cualquier índice como si de un array se tratase). void add(int index, Object element) Object remove(int index) Object get(int index) Object set(int index, Object element) int indexOf(Object o) int lastIndexOf(Object o) List subList(int min, int max) - Sets: Colecciones que no admiten dos elementos iguales. Es decir, colecciones que no admiten que un nuevo elemento B pueda añadirse a una colección que tenga un elemento A cuando A.equals(B). - Maps: Colecciones que asocian un valor a una clave. Parecido a la estructura de “array asociativo” que se encuentra en otros lenguajes. Un Map no puede tener dos claves iguales. Object put(Object key, Object value)

description

coleccionesjava

Transcript of Colecciones de Java Exposicion - Copia

TIPOS DE COLECCIONESLas colecciones son una especie de arrays de tamao dinmico. Para usarlas haremos uso del Java Collections Framework (JCF), el cual contiene un conjunto de clases e interfaces del paquete java.util para gestionar colecciones de objetos. CollectionContenedor simple de objetos no ordenados. Los duplicados son permitidos int size() boolean empty() boolean contains(Object elem) Iterator iterator() Object[] toArray() Object[] toArray(Object dest[]) boolean add(Object elem) boolean remove(Object elem) void clear() Listas: Una lista ordenada, o secuencia. Normalmente permiten duplicados y tienen acceso aleatorio (es decir, puedes obtener elementos alojados en cualquier ndice como si de un array se tratase). void add(int index, Object element) Object remove(int index) Object get(int index) Object set(int index, Object element) int indexOf(Object o) int lastIndexOf(Object o) List subList(int min, int max) Sets: Colecciones que no admiten dos elementos iguales. Es decir, colecciones que no admiten que un nuevo elemento B pueda aadirse a una coleccin que tenga un elemento A cuando A.equals(B). Maps: Colecciones que asocian un valor a una clave. Parecido a la estructura de array asociativo que se encuentra en otros lenguajes. Un Map no puede tener dos claves iguales. Object put(Object key, Object value) Object remove(Object key) Object get(Object key) containsKey, containsValue isEmpty size Proporciona tres vistas de coleccin: coleccin de claves (keySet), coleccin de valores (values), coleccin de asociaciones clave-valor (entrySet).A la hora de usar colecciones en Java, lo ms importante es elegir el tipo de coleccin. Cuando trabajemos con colecciones, siempre declararemos las instancias con el nombre de su interfaz, aprovechando el enlace dinmico.De esta forma, aunque la implementacin cambie en el futuro, podemos tener claro que la aplicacin no va a dar fallos.

UTILIDAD public static Object min(Collection col) public static Object max(Collection col) public static Object min(Collection col, Comparator comp) public static Object max(Collection col, Comparator comp) public static void reverse(List lista): Invierte la lista. public static void copy(List dst, List fnt) public static void sort(List lista): Ordena una lista utilizando un algoritmo merge sort. public static void sort(List lista, Comparator comp) public static int binarySearch(List lista, Object clave, Comparator comp) int binarySearch(List list, Object key): Busca un elemento en una lista ordenada utilizando un algoritmo de bsqueda binaria. El mtodo devuelve un entero indicando la posicin en la que se encuentra el elemento, o bien un nmero negativo si no se encontr. Este nmero negativo indica la posicin la que se encontrara el elemento de haber estado en la coleccin.ITERADORES DE UNA COLECCINLa interface iterable est incluida en el api de Java, en concreto en el paquete java.lang. Es una interfaz de uso habitual al igual que el caso de las interfaces Cloneable y Comparable que ya hemos explicado. Implementar Iterable tan slo obliga a sobreescribir un mtodo que es iterator(). Este mtodo debe devolver un objeto de tipo Iterator. Vamos a explicar la terminologa porque puede parecer confusa.Collection >> Iterator iterator(); interface Iterator{ boolean hasNext(); /* Devuelve true si la iteracin tiene mas elementos */ Object next(); /* Devuelve el siguiente elemento de la iteracin Lanza excepcin NoSuchElementException */ void remove(); /* Elimina el ltimo elemento devuelto por la iteracin Est capacitado para decir que no lo implementa UnsupportedOperationException */ } La interfaz ListIterator extiende a Iterator y maneja un objeto List ordenado. Permite iterar hacia delante y hacia atrs.EJERCICIO PRCTICOUSO DE LA COLLECCION A continuacin se presenta un sencillo ejemplo de como se utiliza una coleccin:// A.javapublic class A {protected int a = 0;public A() {};public A(int a) { this.a = a; }public void getA() {System.out.println("Clase A, valor: "+a);}}// B.javaclass B extends A {public B() { super(0); }public B(int a) { super(a); }public void getA() {System.out.println("Clase B, valor:"+a);}}// Coleccion.javaimport java.util.ArrayList;import java.util.Iterator;public class Coleccion {public static void main(String args[]) {ArrayList al = new ArrayList();for(int i = 0; i < 10; i += 2)al.add(new A(i));for(int i = 1; i < 10; i += 2)al.add(new B(i));A a = null;Iterator it = al.iterator();while(it.hasNext() == true) {a = (A)it.next();a.getA(); } } }Al ejecutar este programa observaras la siguiente salida. Fjate que aunque en el ArrayList hemos aadido objetos de las clases A y B, realmente se han almacenado como referencias a Object, de tal modo que cuando los hemos recuperado con next() hemos tenido que hacer un casting.Clase A, valor: 0Clase A, valor: 2Clase A, valor: 4Clase A, valor: 6Clase A, valor: 8Clase B, valor:1Clase B, valor:3Clase B, valor:5Clase B, valor:7Clase B, valor:9

USO DEL ITERADORClculo del gasto total de un departamentopublic double gastoDpto(){ double gasto=0; Iterator it=plantilla.iterator(); while (it.hasNext()){gasto+=((Empleado)it.next()).getSueldo(); } return gasto; } Siendo plantilla una coleccin que implemente la interfaz CollectionBIBLIOGRAFIA http://www.luaces-novo.es/guia-de-colecciones-en-java/ http://programacion.jias.es/2011/10/colecciones-genericos-en-java/ http://dis.um.es/~bmoros/privado/practicas/Curso05-06/seminario5-curso0506.pdf http://mundogeek.net/archivos/2009/03/16/colecciones-en-java/