INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C)

Documentos relacionados
EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET...

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Patrones de Diseño. Patrón de comportamiento Iterator. Técnicas de Programación - Curso 2007/08

AGRUPA P R OBJET E OS 1

Colecciones. Nadjet Bouayad-Agha Programación 2007

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.

Ejercicio 1 (proyecto prlistas, paquete listas)

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00921C)

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Programación Orientada a Objetos Curso 2015/2016. Ejercicios sobre colecciones y Java 8

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

EL MÉTODO EQUALS EN JAVA. DIFERENCIA ENTRE IGUALDAD E IDENTIDAD. COMPARAR OBJETOS. EJEMPLOS. (CU00662B)

Clases Abstractas e Interfaces

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C)

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

EJEMPLO EJERCICIO RESUELTO CON POLIMORFISMO, SOBREESCRITURA DE MÉTODOS Y HERENCIA JAVA. CÓDIGO (CU00691B)

CLASE DATE DEL API JAVA. MÉTODOS BEFORE, AFTER, TOLOCALESTRING, TOGMTSTRING Y GETTIME. EJEMPLOS. (CU00924C)

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

Definición. Mónica E. García García Feb 07

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Introduciendo datos desde el

Guía - Taller # 2 (JAVA)

FACULTAD DE INGENIERÍA

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Programación orientada a objetos

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

III. Desarrollo de aplicaciones con manejo de datos en la memoria Reuven Feuerstein Javier Navarro

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Universidad de Cantabria

Para crear un arreglo de cualquier tipo de elementos la sintaxis es:

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

CLASE CALENDAR Y GREGORIANCALENDAR DE JAVA. CONVERSIÓN DE FECHAS. EJEMPLOS. CAMBIOS DESDE JAVA 8 (CU00925C)

Curso de Java Introducción a la Programación I

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Ejercicios de tratamiento de errores

Fundamentos de la Programación Orientada a Objetos Agrupación de objetos. Colecciones e iteradores

5. Sentencias selectivas o condicionales

Tema: Matrices en C#.

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Cursos

Introducción a Java. Introducción a Java. Programación I

Estructura de un programa en Java

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Prueba N o 1. Programación II

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

MOO - Metodología y Programación Orientada a Objetos

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

18. Interfaces Declaración de una interfaz

En Java, un arreglo es un grupo de variables (llamados elementos o componentes) que contienen valores, todos del mismo tipo.

Concurso: Cuánto sabes de JAVA?

Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML

Curso Informática Lección 2. Introducción a la programación en Java

Taller de Programación I. Tema 10: Herencia en Java

Tema 6: Clases. Índice

ASIGNACIÓN DE IGUALDAD EN JAVA. REFERENCIAS A OBJETOS. DIFERENCIA ENTRE IGUALDAD E IDENTIDAD. (CU00663B)

LA CLASE ARRAYLIST DEL API DE JAVA. MÉTODOS ADD, SIZE, ETC. CONCEPTO DE CLASE GENÉRICA O PARAMETRIZADA (CU00665B)

LABORATORIO 6. ELEMENTOS DEL LENGUAJE DEPROGRAMACIÓN Y ESTRUCTURAS DE DATOS EN JAVA

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

DOCUMENTAR PROYECTOS JAVA CON JAVADOC. COMENTARIOS, SÍMBOLOS, TAGS (DEPRECATED, PARAM, RETURN, ETC.) (CU00680B)

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

EDA. Tema 8 Colas de Prioridad: Heaps

FACULTAD DE INGENIERÍA

Tema: Arreglos de objetos en C#.

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Bloque II. Elementos del lenguaje de programación Java

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

4. Operadores Operador asignación

6. Sentencias repetitivas o bucles

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos con Java

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Java Básico. Métodos estáticos

ARREGLOS UNIDIMENSIONALES

Transcripción:

APRENDERAPROGRAMAR.COM INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen: Entrega nº17 curso Lenguaje de programación Java Nivel Avanzado I. Autor: Manuel Sierra y José Luis Cuenca

INTERFACE COLLECTION A continuación vamos a proceder a describir de manera detallada todas las interfaces y clases que consideramos más relevantes del paquete java.util y que hemos introducido previamente. Para ello comenzaremos por la raíz de todas ellas que es la interface Collection. COLLECTION Esta interfaz es la raíz de todas las interfaces y clases relacionadas con colecciones de elementos. Algunas colecciones pueden admitir duplicados de elementos dentro de ellas, mientras que otras no admiten duplicados. Otras colecciones pueden tener los elementos ordenados, mientras que en otras no existe orden definido entre sus elementos. Java no define ninguna implementación de esta interface y son respectivamente sus subinterfaces las que implementarán sus métodos como son por ejemplo las interfaces Set o List (que son subinterfaces de Collection). Una colección es de manera genérica un grupo de objetos llamados elementos. Esta interfaz por tanto será usada para pasar colecciones de elementos o manipularlos de la manera más general deseada. En resumen la idea es la siguiente: cuando queremos trabajar con un conjunto de elementos, necesitamos un almacén donde poder guardarlos. En Java, se emplea la interface genérica Collection para este propósito. Gracias a esta interface, podemos almacenar cualquier tipo de objeto y podemos usar una serie de métodos comunes, como pueden ser: añadir, eliminar, obtener el tamaño de la colección ya que se trata de métodos definidos por la interface que obligatoriamente han de implementar las subinterfaces o clases que hereden de ella. Collection se ramifica en subinterfaces como Set, List y otras que verémos en profundidad a lo largo del curso. TIPOS DE COLECCIONES Como estudiaremos a lo largo del curso, Java proporciona una serie de estructuras (intefaces, clases ) muy variadas para almacenar datos. El siguiente esquema resume las interfaces y clases más usadas para colecciones de datos:

Un tipo de colecciones de objetos en Java son los Maps. A pesar de que estas estructuras denominadas mapas o mapeos son colecciones de datos, en el api de Java no derivan de la interface Collection. No obstante, muchas veces se estudian conjuntamente junto a las clases e interfaces derivadas de Collection. El siguiente esquema resume cómo se organiza la interface Collection y sus derivaciones: Estas estructuras ofrecen diversas funcionalidades: ordenación de elementos o no, mejor rendimiento para la ordenación para la inserción, tipos de operaciones disponibles, etc. Es importante conocer cada una de ellas para saber cuál es la estructura más adecuada en función de la situación en que nos

encontremos. Por ejemplo si necesitamos realizar miles de búsquedas al día es importante elegir una estructura que tenga buenos rendimientos para búsquedas. Si necesitamos realizar miles de inserciones manteniendo un orden es importante usar una estructura que tenga buenos rendimientos para inserciones. Un buen uso de estas estructuras mejorará el rendimiento de nuestra aplicación. Para conocer qué tipo de colección usar, podemos emplear diagramas de decisión similares al siguiente: MÉTODOS DEFINIDOS EN LA INTERFAZ COLLECTION Como cualquier interface en Java, Collection nos obliga a implementar varios métodos de los que queremos destacar los siguientes: - Boolean add (E e) - Boolean remove (Object o) - Int size() El primer método añade el elemento de la clase E a la colección, el segundo eliminaría el objeto o de la colección y el tercero nos devolvería el tamaño de la colección. Queda claro por tanto que la interface Collection sirve para trabajar con colecciones de objetos, no de tipos primitivos. Hay más métodos que podemos observar consultando la documentación pero por simplicidad hemos querido destacar tan solo estos.

STREAMS En primer lugar indiquemos que en Java existen clases del paquete Java I/O denominadas InputStream, OutputStream y otras con nombres similares derivadas de estas. Sin embargo, el término Stream en las últimas versiones de Java tiene otro significado adicional, que no tiene nada que ver con estas clases. Los Streams en las últimas versiones Java son un nuevo soporte para las operaciones con datos. No vamos a ver ahora los Streams en profundidad, pero sí vamos a hacer una pequeña incursión porque los Streams están muy relacionados con las colecciones. Con la aparición de la API Stream las colecciones han aumentado su funcionalidad. Los streams nos dan la posibilidad de realizar operaciones funcionales sobre los elementos de las colecciones, siguiendo la filosofía de la denominada programación funcional. No queremos entrar en detalle ahora con esto. Vamos a ver un ejemplo de la API Stream sólo para hacernos una idea. Supongamos que queremos iterar sobre una lista de números enteros y averiguar la suma de todos los números enteros mayores de 10. A continuación presentamos cómo puede resolverse esta tarea de la forma tradicional (usando un iterador, código en el lado izquierdo) o mediante el uso de Streams (código en el lado derecho). import java.util.*; /* Ejemplo Streams aprenderaprogramar.com */ public class TestDeEnteros { public static void main(string[] args) { ArrayList<Integer> milistadoal; milistadoal = new ArrayList<Integer>(); milistadoal.add(44); milistadoal.add(7); milistadoal.add(16); milistadoal.add(29); milistadoal.add(8); milistadoal.add(50); System.out.print("La suma de elementos mayores de 10 es: "); Iterator<Integer> it = milistadoal.iterator(); int sum = 0; while (it.hasnext()) { int num = it.next(); if (num > 10) { sum += num; System.out.print( milistadoal.stream().filter(i -> i > 10).mapToInt(i -> i).sum() ); Ten en cuenta que el código que usa Streams puede no funcionar en versiones antiguas de Java. El uso de Streams puede tener ventajas. Por ejemplo en muchos casos reduce considerablemente la cantidad de codigo; genera resultados a través de una serie de operaciones sobre datos sin modificar estos datos; y permite optimizar procesos para reducir el consumo de recursos (como memoria). No os preocupeis si ahora no lo veis del todo claro. Esto es solo una primera toma de contacto con los streams. Los Streams merecen ser estudiados con mayor profundidad. De momento, lo único que debemos saber es que hay una forma adicional de operar sobre colecciones distinta a la forma tradicional: el uso de Streams.

EJEMPLO Y EJERCICIO RESUELTO Pasamos ahora a la acción y vamos a escribir nuestro primer programa Java utilizando colecciones de elementos de forma tradicional. Para ello antes de ver otras colecciones más avanzadas vamos a utilizar la clase ArrayList que ya se ha visto en varias ocasiones anteriormente y debemos por tanto conocer. Como Collection es la raíz de todas las interfaces de colecciones de elementos, entonces ArrayList tiene que tener implementados los métodos de esta interfaz obligatoriamente y utilizaremos los métodos add, remove y size que hemos destacado previamente. Para ello vamos a crear un objeto ArrayList en el cual insertaremos objetos de la clase String. Luego eliminaremos algunos y finalmente llamaremos al método size para que nos devuelva el tamaño de la colección de elementos de la clase String. /* Ejemplo Interfaz Collection aprenderaprogramar.com */ import java.util.arraylist; import java.util.collection; public class Programa { public static void main(string arg[]) { Collection listamarcascoches = new ArrayList<String>(); // El tipo de listamarcascoches es Collection listamarcascoches.add("audi"); listamarcascoches.add("porsche"); listamarcascoches.add("aston Martin"); listamarcascoches.add("ferrari"); listamarcascoches.add("mercedes"); listamarcascoches.add("seat"); System.out.println("Número elementos antes de eliminar: " + listamarcascoches.size() ) ; System.out.println (listamarcascoches.tostring() ) ; listamarcascoches.remove ("Seat"); listamarcascoches.remove ("Mercedes"); System.out.println("Número elementos después de eliminar Seat y Mercedes: " + listamarcascoches.size() ) ; System.out.println(listaMarcasCoches.toString () ); Tras ejecutar el programa en BlueJ, tenemos la siguiente salida:

CONCLUSIONES Podemos observar el uso de la interfaz Collection claramente en el anterior ejemplo. Al ser la raíz de casi todas las interfaces de colecciones es la más sencilla y por tanto la que menos métodos tiene. Utilizamos como comentamos anteriormente la implementación de ArrayList por ser también sencilla y por ir avanzando poco a poco sentando las bases para seguir avanzando posteriormente. En el ejemplo introducimos 6 elementos en nuestra colección que fueron las cadenas de texto Audi, Porsche, Aston Martín, Ferrari, Mercedes y Seat para posteriormente eliminar 2 (Seat y Mercedes) quedándonos por tanto en la colección con 4 elementos. Qué diferencia existe entre declarar el objeto listamarcascoches como Collection, List ó ArrayList? Fíjate que estas tres posibilidades existen, ya que la sentencia new ArrayList<String>(); crea un objeto de tipo ArrayList que es al mismo tiempo de tipo ArrayList, List y Collection debido al polimorfismo de Java. La diferencia estriba en que declarando el objeto listamarcascoches como Collection, en dicho objeto se puede almacenar cualquier objeto que cumpla con la interface. Por tanto ese objeto podría pertenecer a clases como ArrayList, HashSet, LinkedList, Stack, TreeSet, Vector, etc. En cambio, cuanto más restringida sea la declaración, menos posibilidades de tipos admite el objeto. Por ejemplo si se declara como tipo List admite menos tipos que si se declara como tipo Collection. Y finalmente tendríamos el caso de máxima restricción, que sería declararlo como tipo ArrayList, en cuyo caso el único tipo admitido sería el propio ArrayList. El uso del polimorfismo nos permite desarrollar programas donde un mismo objeto admite distintos tipos, y esto puede resultar ventajoso para elegir el tipo más adecuado en función de las circunstancias o no tener que realizar cambios que afecten a todo el programa si queremos cambiar la clase específica en que está instanciado un objeto. Las últimas versiones de Java incorporan una nueva forma de operar sobre colecciones que en algunos casos puede resultarnos de interés: el uso de Streams. Próxima entrega: CU00918C Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&itemid=180