Tipos SortedSet, Map y SortedMap Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.0 Unidad Didáctica 16.

Slides:



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

Curso de java básico (scjp)
PILA.
TECNICATURA UNIVERSITARIA EN INFORMATICA
Definición de Clases y Variables de referencia.
Capitulo 3 Java util.
2.2 Pila de números enteros
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.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
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.
Técnicas avanzadas de programación Interfaces
Colecciones.
ESTRUCTURA DE DATOS EN JAVA
El lenguaje de programación Java
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SIETE GENERICOS Y COLECCIONES.
Tema 17: java.util Antonio J. Sierra.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
El lenguaje de programación Java1 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Colecciones en JAVA José Luis Redondo García.
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
1 Estructuras de Datos en Java M.C. Juan Carlos Olivares Rojas.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
Application Unit Software ZEN Support Tools. Application Unit Arranque Software ZEN Como cualquier otra aplicación de Windows, para ejecutar el Software.
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.
MATERIAL EDUCATIVO PARA EL «ROE» COMBINAR CORRESPONDENCIA PROFRA. Guadalupe Hernández Ramírez MATRÍCULA PLANTEL 12 Nezahualcóyotl FECHA. 21 de.
Fórmulas y Funciones en Excel CLASE 5. Agenda de la clase: 1. Objetivos de la clase.2. Inserción de formulas.3. Referencia de celdas: relativas.
Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Modelo entidad/interrlación Tema 2. Parte 2. Modelo E/IR Utiliza un conjunto de símbolos y reglas para representar los datos y las relaciones entre ellos.
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.
Unidad 6 Polimorfismo.
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,
Tutorial del catálogo de la Biblioteca Universitaria Actualización septiembre 2011 La pantalla que estás viendo muestra la descripción de un documento.
Diagrama de clases Silvia Herzovich Rodrigo Aronas Matias Silversteyn.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Patricia López & Julio Medina Computadores y Tiempo Real Santander, 2013 G80 - Advanced Computation 1 Generación de Código con BOUML.
Implementación de Iterables Construcción de Iterables virtuales o basados en otros iterables Fundamentos de Programación Departamento de Lenguajes y Sistemas.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Diagramas UML Richard Mora Republica Bolivariana de Venezuela Ministerio del poder popular para la educación I.U.T. Antonio José de Sucre Barquisimeto,
This y static. This Normalmente, dentro del cuerpo de un método de un objeto se puede referir directamente a las variables miembros del objeto. Sin embargo,
Indicadores clave de rendimiento (KPI) en modelos multidimensionales Diciembre 2015 Recopilo: Alberto Espinosa González.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Una base de datos, a fin de ordenar la información de manera lógica, posee un orden que debe ser cumplido para acceder a la información de manera coherente.
LAS LEYES DE LA TERMODINÁMICA. Las leyes de la termodinámica que se desarrollarán serán:  Ley cero de la termodinámica o principio del equilibrio termodinámico.
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.
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Tratamientos secuenciales I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 8 Versión
Introducción a programación web Martin Esses. Los datos almacenados en las bases de datos normalmente son mostrados en nuestras vistas. Para que nuestras.
Iterables virtuales Concepto, Metodología de desarrollo y Ejemplos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 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.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: COLAS.
Tratamientos Secuenciales Generalizados I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 18 Versión
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Instrucciones para realizar el proceso de AUTOEVALUACIÓN de competencias. Gerencia.- Octubre 2011 Nota: Pulsar el botón izquierdo del ratón o la tecla.
Melissa Victoria Mendiola Peralta.  Los algoritmos son las series de pasos por los cuales se resuelven los problemas.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
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.
Transcripción de la presentación:

Tipos SortedSet, Map y SortedMap Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 16

UD16: Tipos SortedSet, Map y SortedMap Índice  Concepto de Conjunto Ordenado  Tipo SortedSet  Métodos  Implementación  Concepto de Función (Map)  Tipo Map  Métodos  Implementaciones  Tipo SortedMap  Métodos  Implementaciones

UD16: Tipos SortedSet, Map y SortedMap Índice  Concepto de Conjunto Ordenado  Tipo SortedSet  Métodos  Implementación  Concepto de Función (Map)  Tipo Map  Métodos  Implementaciones  Tipo SortedMap  Métodos  Implementaciones

UD16: Tipos SortedSet, Map y SortedMap Concepto de Conjunto Ordenado  Recordemos que el tipo Set se corresponde con el concepto matemático de conjunto, y que sus operaciones son: // Operaciones básicas int size(); boolean isEmpty(); boolean contains(Object o); // Operaciones modificadoras boolean add(T e); boolean remove(Object o); // Operaciones con grupos de elementos boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c); void clear();...

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedSet  Un conjunto ordenado (SortedSet) es un conjunto en el que sus elementos ( ) tienen definida una relación de orden total que permite recorrer u obtener los elementos según ese orden. T tiene que ser Comparable. > Iterable > Collection > Set > SortedSet

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedSet. Métodos public interface SortedSet extends Set { // Elemento mínimo (primero) y máximo (último) T first(); T last(); // Vistas de rangos SortedSet headSet (T toElement); SortedSet tailSet (T fromElement); SortedSet subSet (T fromElement, T toElement); // Comparador utilizado Comparator comparator(); } Nota: información detallada del contrato en - java.util – interfaz SortedSet

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedSet. Métodos  Las vistas siempre incluyen al primer elemento y excluyen al último. Por ejemplo, si se ejecuta el siguiente código: SortedSet ss = new TreeSet (); ss.add('X'); ss.add('C'); ss.add('F'); ss.add('P'); ss.add('R'); ss.add('Q'); mostrar("ss = " + ss); SortedSet inicio = ss.headSet('G'); SortedSet medio = ss.subSet('G', 'R'); SortedSet fin = ss.tailSet(‘R'); mostrar(“ss.headSet('G') = " + inicio); mostrar(“ss.subSet('G', 'R') = " + medio); mostrar(“ss.tailSet(‘R') = " + fin);  se mostrará: ss = [C, F, P, Q, R, X] ss.headSet('G') = [C, F] ss.subSet('G', 'R') = [P, Q] ss.tailSet(‘R') = [R, X]

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedSet. Métodos  ss.headSet(‘G’) son los estrictamente menores que ‘G’.  ss.subSet(‘G’, ‘R’) son los elementos de ss mayores o iguales que ‘G’ y menores que ‘R’.  ss.tailSet(‘R’) son los elementos mayores o iguales que ‘R’.  Lo que devuelven estas operaciones son “vistas” respaldadas por el conjunto original: modificaciones en el conjunto repercuten en las vistas y viceversa. ss.subSet(‘G’, ‘R’) = ‘P’‘Q’ ss = ‘C’‘F’‘P’‘Q’‘R’‘X’ ss.headSet(‘G’) = ‘C’‘F’ ss.tailSet(‘R’) = ‘R’‘X’ < ‘G’ >= ‘G’ <‘R’ >= ‘R’

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedSet. Métodos  Por ejemplo, si a continuación se ejecuta: mostrar("ss = " + ss); fin.add('S'); mostrar(“ss.tailSet(‘R') tras fin.add('S') = " + fin); mostrar("ss tras fin.add('S') = " + ss); ss.add('D'); mostrar("ss tras ss.add('D') = " + ss); mostrar(“ss.headSet('G') tras ss.add('D') = " + inicio);  se mostrará: ss = [C, F, P, Q, R, X] ss.tailSet(‘R') tras fin.add('S') = [R, S, X] ss tras fin.add('S') = [C, F, P, Q, R, S, X] ss tras ss.add('D') = [C, D, F, P, Q, R, S, X] ss.headSet('G') tras ss.add('D') = [C, D, F]

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedSet. Métodos  En las vistas devueltas por las operaciones con rangos sólo se puede actuar sobre el rango delimitado por el inicio y fin. Por ejemplo, si se ejecuta el siguiente código: mostrar("inicio = headSet('G') = " + inicio); inicio.add('G');  se eleva la excepción: java.lang.IllegalArgumentException: key out of range  headSet, tailSet y subSet elevan la excepción IllegalArgumentException si el argumento está fuera de rango.  subSet eleva la excepción IllegalArgumentException si el elemento inicial es mayor que el final.  first y last elevan la excepción NoSuchElementException si el conjunto está vacío.

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedSet. Métodos  El for extendido actúa en el orden que induce la ordenación en el conjunto ordenado: SortedSet ss = new TreeSet (); ss.add('X'); ss.add('C'); ss.add('F'); ss.add('P'); ss.add('R'); ss.add('Q'); for (Character ch : ss) { mostrar(ch); }  muestra: C F P Q R X

UD16: Tipos SortedSet, Map y SortedMap SortedSet. Implementación y constructores  La implementación del tipo SortedSet es la clase TreeSet.  Tiene cuatro constructores:  TreeSet(). Construye un conjunto ordenado vacío. Los elementos se ordenarán según su orden natural.  TreeSet(Collection c). Construye un conjunto ordenado que contendrá los elementos de c. Los elementos se ordenarán según su orden natural.  TreeSet(Comparator comparator). Construye un conjunto ordenado vacío. Los elementos se ordenarán según el comparador.  TreeSet(SortedSet s). Es el constructor copia. Construye un nuevo conjunto ordenado con los mismos elementos que s y ordenado según el mismo criterio que s.

UD16: Tipos SortedSet, Map y SortedMap SortedSet. Problemática del Comparator  El tercer constructor TreeSet(Comparator comparator) utiliza un Comparator. Esto introduce algo que hay que tener en cuenta:  En los conjuntos ordenados dos elementos se consideran iguales si el comparador entre ellos devuelve cero.  En los conjuntos ordenados que usan Comparable, compareTo debe ser compatible con equals: dos elementos son iguales si compareTo devuelve cero y viceversa; por tanto el conjunto ordenado se comportará normalmente.  Por ejemplo: si tenemos personas identificadas por el NIF (compareTo y equals usan el nif), como todas las personas tienen número distintos, no habrá problema: estarán ordenadas por ese número.  Si se ha utilizado el tercer constructor, los elementos se ordenan según el Comparator suministrado en la creación.

UD16: Tipos SortedSet, Map y SortedMap SortedSet. Problemática del Comparator  Si tenemos un Comparator por apellidos-nombre, para tenerlos por orden alfabético, ¡las personas que tengan los mismos nombre y apellidos desaparecerán!  Lo mismo ocurre si tenemos un Comparator por estatura (sólo quedará una persona de cada estatura que haya), por edad (habrá sólo uno por edad) o por sexo (sólo quedarán, como mucho, dos).  Esto se puede resolver utilizando el compareTo como criterio de desempate. Por ejemplo: public int compare(Persona p1, Persona p2) { int cmp = p1.getNombre().compareTo(p2.getNombre()); if (cmp == 0) { cmp = p1.compareTo(p2); } return cmp; }

UD16: Tipos SortedSet, Map y SortedMap Índice  Concepto de Conjunto Ordenado  Tipo SortedSet  Métodos  Implementación  Concepto de Función (Map)  Tipo Map  Métodos  Implementaciones  Tipo SortedMap  Métodos  Implementaciones

UD16: Tipos SortedSet, Map y SortedMap Concepto de Función ( Map )  Una Función (Map) es un tipo de datos que permite asociar una clave con un valor. Un Map no puede tener claves duplicadas.  Podemos considerar sus elementos como pares clave-valor (también llamados entradas).  Ejemplo: una función que asocia cadenas que representan números de matrícula (clave) con objetos de la clase vehículo, compuesto por las propiedades tipo de vehículo, marca, modelo y color (valor). MatrículaVehículo SE-8594-CHMotocicleta, Yamaha. 250 Special, Burdeos 2354-FCDAutomóvil, Volkswagen, Polo, Azul 8955-DDPAutomóvil, Seat, León, Amarillo CA-71252Automóvil, Simca, 1000, Blanco 2287-BAHCamión. Volvo FM12 42, Blanco

UD16: Tipos SortedSet, Map y SortedMap Concepto de Función ( Map )  Se corresponde con el concepto matemático de función (no inyectiva, puesto que un valor puede estar asociado a más de una clave). 1+1 “uno” “1”“1” “I”“I” “2”“2” “ II ” “ 1.0 ” 1 2

UD16: Tipos SortedSet, Map y SortedMap Concepto de Función ( Map )  Map NO extiende a Collection. NO es iterable.  Tiene dos tipos genéricos: el tipo de las claves (que representaremos como K) y el de los valores asociados (que representaremos como V).  Ejemplos cotidianos de maps son los listines telefónicos (clave: nombre contacto, valor: número de teléfono), listas de clase (clave: nombre del alumno, valor: calificaciones), etc.  Tiene muchas aplicaciones en programación: representar diccionarios y propiedades, almacenar en memoria tablas de bases de datos, cachés, etc. > Map > SortedMap

UD16: Tipos SortedSet, Map y SortedMap Tipo Map. Métodos public interface Map { // Operaciones observadoras int size(); boolean isEmpty(); boolean containsKey(Object key); boolean containsValue(Object value); V get(Object key); // Operaciones modificadoras V put(K key, V value); V remove(Object key); // Operaciones con grupos de elementos void putAll(Map m); void clear();

UD16: Tipos SortedSet, Map y SortedMap Tipo Map. Métodos // Vistas Set keySet(); Collection values(); }

UD16: Tipos SortedSet, Map y SortedMap Tipo Map. Métodos Las operaciones que no tienen significados obvios son:  put(key, value) añade a la función la clave key, a la que le asocia el valor value. Devuelve el valor que previamente tuviera asociada la clave, si ya estaba en la función o null en caso contrario.  get(key) devuelve el valor asociado con la clave key, si ésta existe en la función o null si no existe.  remove(key) elimina la clave key si estaba en la función, en cuyo caso devuelve el valor que tuviera asociado. Si no existía esa clave, no hace nada y devuelve null.

UD16: Tipos SortedSet, Map y SortedMap Tipo Map. Métodos  keySet() devuelve el conjunto de las claves que forman parte de la función. Como es un conjunto SÍ es iterable.  values() devuelve una Collection con los valores que contiene la función. Puede haber elementos duplicados, de ahí que sea una Collection y no un Set. También es iterable.  Los objetos devueltos por estas operaciones son vistas del map original, por lo que las modificaciones que se hagan sobre el map original repercutirán en las vistas devueltas y viceversa. Nota: información detallada del contrato en - java.util – interfaz Map

UD16: Tipos SortedSet, Map y SortedMap Tipo Map. Métodos  Ejemplo. Si ejecutamos el código: Map m = new HashMap (); m.put("uno", 1); m.put("dos", 2); m.put("tres", 3); m.put("cuatro", 4); m.put("cinco", 5); m.put("5", 5); m.put("3", 3); mostrar("m = " + m); Set claves = m.keySet(); claves.remove("dos"); mostrar("m tras eliminar la clave dos = " + m); Collection valores = m.values(); valores.remove(3); mostrar("m tras eliminar el valor 3 = " + m);

UD16: Tipos SortedSet, Map y SortedMap Tipo Map. Métodos  obtenemos la salida: m = {3=3, cuatro=4, tres=3, 5=5, cinco=5, uno=1, dos=2} m tras eliminar la clave dos = {3=3, cuatro=4, tres=3, 5=5, cinco=5, uno=1} m tras eliminar el valor 3 = {cuatro=4, tres=3, 5=5, cinco=5, uno=1}  Si intentamos ejecutar: claves.add("siete"); o valores.add(7);  se eleva la excepción UnsupportedOperationException.

UD16: Tipos SortedSet, Map y SortedMap Tipo Map. Implementaciones  Map tiene una implementación natural, la clase HashMap, que es para la que tiene utilidad el método hashCode().  También puede implementarse mediante la clase TreeMap.  HashMap tiene cuatro constructores, de los que veremos dos:  HashMap() construye un Map vacío.  HashMap(Map m) es el constructor copia: crea un nuevo Map que contiene los mismos pares que m.

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedMap. Métodos  Map tiene un subtipo denominado SortedMap, análogo al SortedSet. Sus claves tienen que tener un criterio de ordenación. Se obtendrán los elementos o se iterará sobre ellos según ese orden. public interface SortedMap extends Map { Comparator comparator(); SortedMap subMap(K fromKey, K toKey); SortedMap headMap(K toKey); SortedMap tailMap(K fromKey); K firstKey(); K lastKey(); }  La semántica de las operaciones es similar a las correspondientes del SortedSet Nota: información detallada del contrato en - java.util – interfaz SortedSet

UD16: Tipos SortedSet, Map y SortedMap Tipo SortedMap. Implementación  La clase que implementa el tipo SortedMap  Tiene cuatro constructores:  TreeMap() construye una función ordenada vacía usando el orden natural de las claves.  TreeMap(Comparator comparator) construye una función ordenada vacía, donde las claves se ordenarán según el comparador.  TreeMap(Map m) construye una nueva función ordenada que contendrá los mismos pares que m y usará el orden natural de sus claves.  TreeMap(SortedMap m) es el constructor copia. Crea una copia del SortedMap que recibe.