Tipos List y Set con tipos genéricos

Slides:



Advertisements
Presentaciones similares
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Advertisements

Técnicas avanzadas de programación Interfaces
Igor Santos Grueiro. Ahora tenemos datos y datos …
ESTRUCTURA DE DATOS EN JAVA
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SIETE GENERICOS Y COLECCIONES.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
El lenguaje de programación Java1 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases.
Colecciones en JAVA José Luis Redondo García.
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión
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,
Patricia López & Julio Medina Computadores y Tiempo Real Santander, 2013 G80 - Advanced Computation 1 Generación de Código con BOUML.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
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: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Tipos List y Set con tipos genéricos Estructura for extendido Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
2012-BM5A. Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar.
Estructura de Datos Luis Humeau Waldi Saturno
Flujos de datos Un flujo es un canal por donde fluyen los datos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Unidad Didáctica 11 Reutilización Versión 1.0.0
Clases y Objetos.
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
¿Qué es una consulta? En bases de datos, una consulta es el método para acceder a los datos en las bases de datos. Con las consultas se puede modificar,
ArrayList Collecciones
Fundamentos de la programación orientada a objetos
Conceptos Básicos de Programación
Colecciones Carlos Fontela, 2008.
Clases y Objetos en Java
FUNCIONES EN EXCEL 2007.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Diseño y Programación Orientada a Objetos
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Programación orientada a objetos
Diseño y Programación Orientada a Objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Listas Dinámicas.
Tema 3. Lenguaje unificado de modelado UML
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Fundamentos del lenguaje de programación Condicionales, ciclos, Métodos, enumeraciones Escuela Técnica Superior Kinal Instructor Edwin Tumax.
Continuación Unidad 4. Control de flujo
LÓGICA DE PROGRAMACIÓN
Aprendiendo Java Pilas y Colas Por Juan Astudillo.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Unidad 3. Introducción a la programación
Continuación Unidad 4. Control de flujo
ESTRUCTURA DE UN PROGRAMA SIMPLE EN JAVA
Introducción a las estructuras de datos
Plantillas (Templates)‏
Manejo de Punteros y objetos en memoria dinámica en C++
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
Introducción al Visual Basic  Un programa en sentido informático está constituido en un sentido general por variables que contienen los datos con los.
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
PROGRAMACIÓN (2).
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
Ordenamiento Ordenar una estructura de datos consiste en reacomodar sus elementos de acuerdo a algún criterio. Por ejemplo, los mensajes pueden ordenarse.
Manejo de Punteros y objetos en memoria dinámica en C++
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Tratamientos secuenciales I
INTRODUCCIÓN A UML.  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Templates (en español: Pantillas, modelos, patrones)‏
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
Transcripción de la presentación:

Tipos List y Set con tipos genéricos Unidad Didáctica 6 Tipos List y Set con tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1

Índice Estructuras de datos predefinidas en Java (Colecciones) Interfaz Collection Métodos Concepto de Lista Implementaciones Concepto de Conjunto Clase Collections

Índice Estructuras de datos predefinidas en Java (Colecciones) Interfaz Collection Métodos Concepto de Lista Implementaciones Concepto de Conjunto Clase Collections

Estructuras de datos predefinidas en Java (Colecciones) Java suministra una serie de Estructuras de Datos que permiten modelar fácilmente problemas del mundo real que involucran colecciones de datos. Una Colección (Collection) es un tipo de datos que agrupa a objetos de un mismo tipo. Algunas colecciones admiten elementos duplicados, otras no. Algunas mantienen los elementos ordenados según determinados criterios, otras no.

Estructuras de datos predefinidas en Java (Colecciones) El uso de colecciones tiene numerosas ventajas: Reduce el esfuerzo de programación puesto que proporciona estructuras de datos y algoritmos útiles. Incrementa la velocidad y la calidad de los programas, puesto que Java ofrece implementaciones optimizadas y libres de errores. Simplifica la interoperabilidad y la reemplazabilidad entre aplicaciones, puesto que facilita estructuras que se pueden intercambiar entre distintos componentes. Reduce esfuerzos de aprendizaje y diseño. En Java las colecciones se representan mediante la interfaz Collection del paquete java.util

Índice Estructuras de datos predefinidas en Java (Colecciones) Interfaz Collection Métodos Concepto de Lista Implementaciones Concepto de Conjunto Clase Collections

Interfaz Collection Concepto: Operaciones: Como se ha dicho, una Colección (Collection) es un tipo de datos que agrupa a objetos de un mismo tipo. Operaciones: básicas: ¿colección vacía?, ¿contiene un elemento?, añadir, quitar, etc. con grupos de elementos: añadir un grupo, quitarlo, ¿los contiene?, borrar la colección, etc.

Interfaz Collection La interfaz Collection en Java: Pertenece al paquete java.util Tiene un tipo genérico (le llamaremos <T>); es el tipo de sus elementos. Hereda de la interfaz Iterable<T>. Esta interfaz se verá más adelante; permite iterar sobre los elementos de la colección (recorrerlos sistemáticamente). Los objetos “iterables” (los que heredan de Iterable) permiten el uso de la sentencia for extendido, que se verá en prácticas.

Interfaz Collection No hay ninguna clase que implemente directamente la interfaz Collection. Cualquier clase que implemente una subinterfaz suya debe tener al menos dos constructores: Un constructor vacío, que crea una estructura vacía. Un constructor con un argumento de tipo Collection, que crea un objeto con los mismos elementos que la colección que recibe, con la implementación correspondiente al constructor de la clase utilizada. Este constructor se denomina “constructor copia”. Java no permite obligar a que una clase tenga un determinado constructor, pero todas las clases que implementan Collection (sus subinterfaces), tienen los dos constructores anteriores.

<<interface>> Interfaz Collection En esta lección vamos a ver en profundidad dos tipos de colecciones, las listas (interfaz List) y los conjuntos (interfaz Set). <<interface>> Set <T> List <T> Collection <T> Iterable <T> etc.

Interfaz Collection. Métodos package java.util; public interface Collection<T> extends Iterable<T> { // Operaciones básicas int size(); boolean isEmpty(); boolean contains(Object o); // Operaciones modificadoras // Devuelven true si se modifica la colección boolean add(T e); boolean remove(Object o); (sigue)

Interfaz Collection. Métodos (continuación) // Operaciones con grupos de elementos // Las operaciones booleanas devuelven true si se // modifica la colección boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends T> c); boolean removeAll(Collection<?> c); boolean retainAll(Collection<?> c); void clear(); ... } Nota: información detallada del contrato en http://java.sun.com/javase/6/docs/api/ - java.util – interfaz Collection

Índice Estructuras de datos predefinidas en Java (Colecciones) Interfaz Collection Métodos Concepto de Lista Implementaciones Concepto de Conjunto Clase Collections

Concepto de Lista Una lista es una secuencia de elementos en la que el orden en el que estén los elementos (cuál es el primero, cuál el segundo, etc.) es relevante. En una lista cada elemento está referenciado mediante un índice. El índice del primer elemento es el 0. Una lista puede contener elementos duplicados. En Java, la lista se modela mediante la interfaz List, que hereda de Collection, por lo que tiene todos sus métodos. Añade algunos métodos: los que involucran a los índices.

Concepto de Lista. Métodos public interface List<T> extends Collection<T> { //Acceso posicional T get(int index); T set(int index, T element); void add(int index, T element); boolean remove(int index); //Búsqueda int indexOf(Object o); int lastIndexOf(Object o); //Vista de subrango List<T> subList(int fromIndex, int toIndex); ... }

Concepto de Lista. Métodos List extiende a Collection, por lo que tiene todos sus métodos. La operación add(T e) añade el elemento al final de la lista. Siempre devuelve true. La operación remove(T e) elimina la primera aparición del elemento e en la lista, si hay alguno; en ese caso devuelve true. Los métodos indexOf y lastIndexOf devuelven -1 si el elemento no está en la lista.

Concepto de Lista. Métodos Todos los métodos que contienen índices elevan la excepción IndexOutOfBoundsException si los índices se salen de los rangos adecuados. Esto funciona del mismo modo en el tipo Vector. Para las operaciones T get(int index); T set(int index, T element); boolean remove(int index); el rango válido para el índice es (0 <= index && index < size()) Para la operación void add(int index, T element); (0 <= index && index <= size())

Concepto de Lista. Métodos Para la operación List<T> subList(int fromIndex, int toIndex); los valores válidos para los índices son (0 <= fromIndex && fromIndex <= toIndex && toIndexindex <= size()) Devuelve una sublista con los elementos desde fromIndex (incluido) hasta toIndex (excluido). Si fromIndex == toIndex, devuelve la lista vacía. Si toIndex es size(), la sublista incluye al último elemento. La lista devuelta está respaldada por la lista original (es una vista de ella): los cambios que se realizan en la sublista devuelta se reflejan en la lista original. Si se realizan cambios estructurales (inserciones o borrados) en la lista original, se eleva una excepción. Nota: información detallada del contrato en http://java.sun.com/javase/6/docs/api/ - java.util – interfaz List

Concepto de Lista. Ejemplos l.size() == 5 l.contains( ) == true l.contains( ) == false Nota: si son objetos, los elementos 0, 1 y 4 serán referencias al mismo objeto.

Concepto de Lista. Ejemplos Operaciones que usan índice: l.get(2) devuelve l.indexOf( ) devuelve 3. l.lastIndexOf( ) devuelve 4. l.indexOf( ) devuelve -1.

Concepto de Lista. Ejemplos l.remove(3) modifica la lista, quedando: y devolviendo

Concepto de Lista. Ejemplos Sobre la lista anterior l.add(2, ) modifica la lista, quedando: 1 2 3 4

Concepto de Lista. Ejemplos Sobre la lista anterior l.sublist(2, 4) devuelve la sublista (llamémosla sl) 1 2 3 4 1

Concepto de Lista. Ejemplos Si hacemos sl.add(1, ), es sl = y ahora l es l = 1 2 1 2 3 4 5

Concepto de Lista. Implementaciones Existen dos implementaciones de las listas: ArrayList. La lista está almacenada en un array. LinkedList. Cada elemento de la lista tiene una referencia a su anterior y a su posterior. Cada una tiene sus ventajas y sus inconvenientes. Se verán con mucho más detalle en la asignatura EDDA

Concepto de Lista. Implementaciones Para crear una lista vacía de un tipo T se usará o bien Por ejemplo, si tenemos un tipo Avion, para crear una lista de aviones se escribirá: o Más adelante se creará una factoría de colecciones que simplificará la creación de éstas. List<T> nombreLista = new LinkedList<T>(); List<T> nombreLista = new ArrayList<T>(); List<Avion> listaAviones = new LinkedList<Avion>(); List<Avion> listaAviones = new ArrayList<Avion>();

Índice Estructuras de datos predefinidas en Java (Colecciones) Interfaz Collection Métodos Concepto de Lista Implementaciones Concepto de Conjunto Clase Collections

Concepto de Conjunto Un conjunto es una colección en la que no se permiten elementos repetidos. Se corresponde con el concepto matemático de conjunto. En Java, se modela mediante la interfaz Set, que hereda de Collection, por lo que tiene todos sus métodos. No añade ningún método: Nota: información detallada del contrato en http://java.sun.com/javase/6/docs/api/ - java.util – interfaz Set public interface Set<T> extends Collection<T> { }

Concepto de Conjunto Dados dos conjuntos (de Integer) a y b: recordemos que: a = {1,2,3,4} b= {4,5,6} a  b = {1,2,3,4,5,6} a – b = {1,2,3} a  b = {4} 1 2 3 4 5 6 a b

Concepto de Conjunto. Métodos La correspondencia entre las operaciones de los conjuntos en matemáticas y los métodos de la interfaz Set es: la unión: a.addAll(b) (devuelve boolean si cambia el conjunto) la diferencia: a.removeAll(b) (idem) la intersección: a.retainAll(b) (idem) ver si es vacío un conjunto: a.isEmpty( ) relación de inclusión: a.containsAll(b) Los métodos addAll, removeAll, retainAll NO devuelven un nuevo conjunto (devuelven un booleano), sino que modifican el conjunto sobre el que se invocan.

Concepto de Conjunto. Implementaciones Los conjuntos tienen fundamentalmente dos implementaciones, HashSet y TreeSet, aunque se usará principalmente la primera. Ambas se verán con detalle en la asignatura EDDA. Para crear un conjunto vacío de tipo T se usará: Por ejemplo, el siguiente código crea un conjunto de cadenas llamado diccionario: Como se ha dicho, más adelante se creará una factoría de colecciones que simplificará la creación de éstas. Set<T> nombreConjunto = new HashSet<T>(); Set<String> diccionario = new HashSet<String>();

Índice Estructuras de datos predefinidas en Java (Colecciones) Interfaz Collection Métodos Concepto de Lista Implementaciones Concepto de Conjunto Clase Collections

Clase Collections El paquete java.util contiene la clase Collections. Esta clase está formada exclusivamente por métodos estáticos que permiten operaciones sofisticadas sobre las colecciones, como invertir una lista, barajarla, ordenarla, buscar una sublista dentro de una lista, encontrar el máximo o el mínimo de los elementos de una colección, contar las veces en las que aparece un elemento, etc. Nota: información detallada en http://java.sun.com/javase/6/docs/api/ - java.util – clase Collections

Clase Collections Ejemplos: Si ejecutamos: la salida es: Supongamos que tenemos una lista l de String que contiene las cadenas "R", "T", "B", "A", "M“ en ese orden. Si ejecutamos: la salida es: mostrar(l); [R, T, B, A, M]

Clase Collections Ejemplos: se muestra por pantalla: Si sobre el valor actual de l ([R, T, B, A, M]) hacemos: se muestra por pantalla: Collections.reverse(l); mostrar(l); [M, A, B, T, R]

Clase Collections Ejemplos: la salida será: Finalmente, si hacemos: Sobre el valor actual de l ([M, A, B, T, R]) ejecutamos: la salida será: Finalmente, si hacemos: se mostrará: Collections.sort(l); mostrar(l); [A, B, M, R, T] Collections.fill(l, "X"); mostrar(l); [X, X, X, X, X]