La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tipos List y Set con tipos genéricos Estructura for extendido Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.2.

Presentaciones similares


Presentación del tema: "Tipos List y Set con tipos genéricos Estructura for extendido Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.2."— Transcripción de la presentación:

1 Tipos List y Set con tipos genéricos Estructura for extendido Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.2 Práctica 7

2 Práctica 7: Estructura for extendido Introducción  Como se ha visto en una práctica anterior, la sentencia for es una estructura iterativa. Recordemos que su estructura es donde INI es la inicialización, CON es la evaluación de la condición y ACT es la actualización.  Por ejemplo, para imprimir todos los elementos de una lista de String ls, se podría hacer for (INI; CON; ACT) {... } for (INI; CON; ACT) {... } for (int i = 0; i < ls.size(); i++) { mostrar(ls.get(i)); } for (int i = 0; i < ls.size(); i++) { mostrar(ls.get(i)); }

3 Práctica 7: Estructura for extendido Introducción  Si un agregado de datos implementa la interfaz Iterable (es un objeto iterable), es posible utilizar una estructura de control específica: el for extendido; también llamada sentencia for-each.  Todos los tipos que heredan de Collection son iterables, puesto que Collection implementa Iterable. Por ejemplo, las listas y los conjuntos son iterables.  Si llamamos objIter al objeto iterable, compuesto de elementos del tipo T, el for extendido tiene la estructura Dentro del bucle, la variable e (o el nombre que hayamos utilizado) va tomando los valores de todos los elementos de objIter. for (T e: objIter) { … } for (T e: objIter) { … }

4 Práctica 7: Estructura for extendido Introducción  La iteración sobre la lista anterior podría hacerse con un for extendido, puesto que List es iterable (implementa Iterable)  Por tanto, el for extendido permite iterar sobre los elementos con mucha facilidad.  Obsérvese que es la única manera de procesar todos los elementos de un conjunto: a diferencia de las listas, no podemos obtener un elemento concreto de un conjunto. for (String cadena: ls) { mostrar(cadena); } for (String cadena: ls) { mostrar(cadena); }

5 Práctica 7: Estructura for extendido Introducción  También se puede usar el for extendido sobre los arrays: si tenemos un array ap de objetos del tipo Punto, con el for normal se podría hacer:  Con el for extendido se puede escribir:  Se puede iterar con el for extendido sobre los arrays, pero cuidado: ¡los arrays no implementan Iterable! Esto significa que no se puede pasar un array a un método que espere recibir un Iterable. for (int i = 0; i < ap.length; i++) { mostrar(ap[i]); } for (int i = 0; i < ap.length; i++) { mostrar(ap[i]); } for (Punto p: ap) { mostrar(p); } for (Punto p: ap) { mostrar(p); }

6 Práctica 7: Estructura for extendido Introducción  Ejemplo: partiendo de un array de Double ad, presentar en pantalla la suma de sus elementos. Double suma = 0.0; for (Double db: ad) { suma += db; } mostrar(suma); Double suma = 0.0; for (Double db: ad) { suma += db; } mostrar(suma);

7 Práctica 7: Estructura for extendido Introducción  El orden en el que se itera sobre los elementos de una estructura que tenga un “orden” en sus elementos (haya un primero, un segundo, etc.) es predecible: del primero al último. Por ejemplo: produce la salida List ls = new LinkedList (); ls.add("Uno"); ls.add("Dos"); ls.add("Tres"); for (String st : ls) { mostrar(st); } List ls = new LinkedList (); ls.add("Uno"); ls.add("Dos"); ls.add("Tres"); for (String st : ls) { mostrar(st); } Uno Dos Tres Uno Dos Tres

8 Práctica 7: Estructura for extendido Introducción  Si una estructura no tiene ningún orden, el for extendido iterará en cualquier orden (no es predecible). Hay que tener esto presente cuando se utilice el tipo Set y el tipo Map (que se verá más adelante). Por ejemplo: produce Set ss = new HashSet (); ss.add("Uno"); ss.add("Dos"); ss.add("Tres"); for (String st : ss) { mostrar(st); } Set ss = new HashSet (); ss.add("Uno"); ss.add("Dos"); ss.add("Tres"); for (String st : ss) { mostrar(st); } Tres Uno Dos Tres Uno Dos

9 Práctica 7: Estructura for extendido Introducción  Si no se desea procesar todos los elementos de un agregado de datos se puede utilizar un if dentro del bucle.  Si se desea salir de un for extendido cuando se cumpla determinada condición se puede utilizar la sentencia break. public static Boolean existeImpar(Iterable it) { Boolean hayImpar = false; for (Integer n : it) { if (n % 2 == 1) { hayImpar = true; break; } return hayImpar; } public static Boolean existeImpar(Iterable it) { Boolean hayImpar = false; for (Integer n : it) { if (n % 2 == 1) { hayImpar = true; break; } return hayImpar; }


Descargar ppt "Tipos List y Set con tipos genéricos Estructura for extendido Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.2."

Presentaciones similares


Anuncios Google