Colecciones en JAVA José Luis Redondo García.

Slides:



Advertisements
Presentaciones similares
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Advertisements

Técnicas avanzadas en java 1.4 y java 5.0
Curso de java básico (scjp)
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Lenguaje de programación Java
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Programación II Listas
Estructuras de datos y algoritmos
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Orientación a Objetos con Java SE
Igor Santos Grueiro. Muchos objetos tienen CLAVE.
Capitulo 3 Java util.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Tratamiento de listas en Java
1.2 Sintaxis del lenguaje Java.
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Marzo 2007 Lenguajes Visuales Clase III.
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
JAVA 1.5 Fernando Almeida Octubre Introducción Java Specification Request (JSR) 14Java Specification Request (JSR) 14 propone introducir tipos y.
Herencia y Polimorfismo en JAVA
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tablas hash Juan Ramón Pérez Pérez Prácticas EDI - © Juan Ramón Pérez.
Técnicas avanzadas de programación Interfaces
Colecciones.
Igor Santos Grueiro. Ahora tenemos datos y datos …
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
Curso Programación en Java
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Vectors (Vectores) Agustin J. González ELO329. Contenidos Qué es un vector? Declaración de Objetos Vectores Inserción y eliminación de items Uso de sub-índices.
ESTRUCTURA DE DATOS EN JAVA
Arboles M.C. José Andrés Vázquez FCC/BUAP
El lenguaje de programación Java
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SIETE GENERICOS Y COLECCIONES.
Tema 17: java.util Antonio J. Sierra.
Informática III Colecciones en Java Lectura adicional: interface.html.
Tema II Estructuras de datos en Java Temas Selectos de Cómputo Grupo 912 Agosto-Diciembre 2005.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
Programación Orientada a Objetos Profesor : Ernesto Eduardo Vivanco Tapia.
El lenguaje de programación Java1 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases.
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
1 Estructuras de Datos en Java M.C. Juan Carlos Olivares Rojas.
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
Algoritmos y Programación III 4. Colecciones, excepciones Carlos Fontela, 2006.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Tipos SortedSet, Map y SortedMap Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 16.
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Iterables virtuales Concepto, Metodología de desarrollo y Ejemplos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Colecciones Carlos Fontela, 2008.
Programación Orientada a Objetos
Transcripción de la presentación:

Colecciones en JAVA José Luis Redondo García. Introducción a Las CLASES COLECCIÓN PROPORCIONADAS POR JAVA y al Manejo de las mÁS REPRESENTATIVAS. José Luis Redondo García. Grupo Quercus Engineering Software, UEX

Índice Colecciones Collection interfaz Map clases ArrayList, LinkedList, HashSet, TreeSet interfaz Map clases TreeMap, HashMap Iteratores: interfaz Iterator El lenguaje de programación Java

JCF (Java Collection Framework) Arquitectura unificada para representar y manipular colecciones JCF consta de: Interfaces (ADTs) Implementaciones concretas (estructuras de datos reusables) Algoritmos (funcionalidad reusable) El lenguaje de programación Java

Colecciones en Java Permite almacenar y organizar objetos de manera útil para un acceso eficiente. Se encuentran en el paquete java.util Núcleo de abstracciones de colecciones de utilidad (interfaces) e implementaciones ampliamente útiles. Las interfaces proporcionan métodos para todas las operaciones comunes y las implementaciones concretas especifican la decisión de las operaciones no permitidas. (java.lang.UnsupportedOperationException) Sobre los elementos se puede iterar (Iterator)

Jerarquía de colecciones

Jerarquía de colecciones

Interfaz Collection (1/2) 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() List – Una colección cuyos elementos permanecen en un orden particular a menos que se modifique la lista. 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)

Interfaz Collection (2/2) Set – Una colección (conjunto) donde no puede haber elementos repetidos, y cuyos elementos no se almacenan necesariamente siguiendo un orden particular. Mismos métodos que Collection con otro contrato. SortedSet – Conjunto con elementos ordenados. Object first() Object last() SortedSet subSet(Object fromElement, Object toElement) SortedSet headSet(Object toElement) SortedSet tailSet(Object fromElement)

Interfaz Map Map SortedMap: Un mapa cuyas claves están ordenadas. Un objeto que asocia claves con valores. No puede tener claves duplicadas. Object put(Object key, Object value); Object remove(Object key); Object get(Object key); containsKey, containsValue, isEmpty, size Proporciona tres vistas de colección: colección de claves (keySet), colección de valores (values), colección de asociaciones clave-valor (entrySet). SortedMap: Un mapa cuyas claves están ordenadas. Object firstKey(), Object lastKey(), SortedMap subMap(Object minKey, Object maxKey), SortedMap headMap(Object maxKey), SortedMap tailMap(Object minKey)

Iteración Collection >> Iterator iterator(); interface Iterator{ boolean hasNext(); /* Devuelve true si la iteración tiene mas elementos */ Object next(); /* Devuelve el siguiente elemento de la iteración Lanza excepción NoSuchElementException */ void remove(); /* Elimina el último elemento devuelto por la iteración 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 atrás.

Iteración Se puede pensar a Iterator como un cursor ubicado entre los elementos de la colección. Permite iterar sólo hacia delante

Interface Iterator Se puede pensar a Iterator como un cursor ubicado entre los elementos de la colección Permite iterar sólo hacia delante

Ejemplo de uso de Iteradores Cálculo del gasto total de un departamento public double gastoDpto(){ double gasto=0; Iterator it=plantilla.iterator(); while (it.hasNext()){ gasto+=((Empleado)it.next()).getSueldo(); } return gasto; Siendo plantilla una colección que implemente la interfaz Collection

Implementaciones de Collection LinkedList – Una implementación de una lista doblemente enlazada. La modificación es poco costosa para cualquier tamaño, pero el acceso aleatorio es lento. Útil para implementar colas y pilas. getFirst, getLast, removeFirst, removeLast, addFirst, addLast ArrayList – Una lista implementada utilizando un array de dimensión modificable. Es costoso añadir o borrar un elemento cerca del principio de la lista si ésta es grande, pero es relativamente poco costoso de crear y rápido para acceso aleatorio. HashSet – Un Set implementado mediante una tabla hash. Es una buena implementación de propósito general por lo que la búsqueda, la adición y eliminación son insensibles al tamaño de los contenidos. TreeSet – Un SortedSet implementado utilizando un árbol binario equilibrado. Es más lento para buscar o modificar que un HashSet, pero mantiene los elementos ordenados. Asume que los elementos son comparables si no se le ha pasado un comparator en el constructor. Todas son Cloneable y Serializable

Convenciones sobre excepciones UnsupportedOperationException Métodos opcionales en la implementación de una interfaz ClassCastException El tipo del elemento que se desea insertar no es del tipo apropiado IllegalArgumentException El valor del elemento no es apropiado para la colección NoSuchElementException La colección de la que se quiere devolver un elemento está vacía NullPointerException Se pasa como argumento una referencia con valor null cuando la colección no admite este valor.

Declaración de colecciones Clase concreta import java.util.*; public class ColeccionSimple { public static void main( String args[] ) { List <String>c = new ArrayList <String>(); for( int i=0; i < 10; i++ ) c.add(new Integer(i)); Iterator it = c.iterator(); while( it.hasNext() ) System.out.println(it.next()); } interfaz

Implementaciones de Map HashMap Una implementación de Map con una tabla hash. El método hashCode de cada clave se utiliza para seleccionar un lugar en la tabla Una colección de utilidad muy general con tiempos relativamente cortos de búsqueda e inserción. TreeMap Una implementación de SortedMap utilizando un árbol binario equilibrado que mantiene sus elementos ordenados por clave. Útil para conjuntos de datos ordenados que requieren una búsqueda por clave moderadamente rápida. Asume que los elementos son comparables si no se le ha pasado un comparator en el constructor. El lenguaje de programación Java

Ejemplo 1/2 Generar números al azar (Math.random) y contar cuantas veces sale cada uno. HashMap = Colección de pares (clave-valor) Clave = número aleatorio generado Valor = contador que acumula las veces que ha aparecido class Contador { private int i; public Contador(){ i=1;} public void incrementar(){++i;} public String toString() { return Integer.toString(i); }

Ejemplo 2/2 class Estadistico { public static void main( String args[] ) { HashMap tabla = new HashMap(); for(int i=0; i < 10000; i++) { // Generar un número entre 0 y 20 Integer num = new Integer((int)(Math.random()*20)); if(tabla.containsKey(num)) //Incrementamos el contador asociado al número ((Contador)tabla.get(num)).incrementar(); else //Añadimos nuevo par: numero-contador tabla.put(num, new Contador()); } System.out.println(tabla);

Las utilidades de Collections 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) public static void copy(List dst, List fnt) public static void sort(List lista) public static void sort(List lista, Comparator comp) public static int binarySearch(List lista, Object clave) public static int binarySearch(List lista, Object clave, Comparator comp)

Ordenamiento de objetos Interface Comparable public interface Comparable { public int compareTo(Object o); } Compara el objeto con el que se invoca el método compareTo Retorna: <0 si this precede a o 0 si this y o es igual a (equals()) >0 si o precede a this Un orden natural no siempre es suficiente Es necesario otro orden distinto al “natural” Los objetos a ordenar no implementan Comparator

Ordenamiento de objetos Interface Comparator public interface Comparator { public int compare(Object o1, Object o2); }

Conclusiones Si un método tiene que devolver (pasar como parámetro) una colección de objetos, el tipo será Iterator o cualquiera de las interfaces de colección. El tipo de la declaración de los atributos y variables locales será cualquiera de las interfaces de colección. List <String> lista = new ArrayList<String>(); Utilizar SIEMPRE Iterator para el recorrido de cualquier colección.

Elegir una colección depende de... Si es de tamaño fijo o no Si los elementos tienen un orden natural o no Si se desea insertar/borrar elementos en cualquier posición o sólo al principio/final Si será necesario hacer búsquedas en una colección con gran cantidad de datos, en forma rápida, Si el acceso a los elementos es aleatorio o secuencial