Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Colecciones Carlos Fontela, 2008
2
Temario Colecciones Java 1.4 (.NET 1.1) Iteradores
(razones conceptuales) Iteradores Colecciones Java 5.0 y .NET 2.0 (intro)
3
Colecciones Agrupan objetos. Se puede operar sobre:
Cada elemento tiene un significado similar. El valor depende de la posición. Se puede operar sobre: Un elemento en particular. Algunos elementos elegidos mediante un filtro. La colección como conjunto. Se definen recorridos. Tienen diferentes interfaces, funcionalidades y eficiencias.
4
Colecciones (II) Arreglos Listas encadenadas Árboles
vectores, matrices, multidimensionales Listas encadenadas lineales, dobles, circulares, multilistas Árboles binarios, generales Vamos a ver las de Java SE 1.4 o .NET 1.1 Por razones didácticas
5
Arreglos primitivos en Java
Única colección como tipo primitivo. Tamaño se define en tiempo de ejecución. Una vez definido, no puede variar. Seguros: Chequeo de rangos. Tipo de los elementos definido estáticamente. Muy veloces Salvo por chequeo de rangos. Biblioteca de funciones pobre en comparación.
6
Interfaces de apoyo public interface Comparable {
public int compareTo (Object o); } public interface Comparator { public int compare (Object o1, Object o2); public boolean equals (Object o1, Object o2);
7
Clase Arrays Clase utilitaria.
Sus métodos son “de clase” o “estáticos”. equals (v1, v2) sort (v) sort (v, Comparator c) binarySearch (v, x) binarySearch (v, x, Comparator c) otros...
8
Arrays.sort e interfaces (I)
Arrays.sort (v1) Funciona bien si el tipo base de v1 Es primitivo Implementa Comparable Usa el compareTo definido Si no, arroja una excepción. Pregunta: ¿cómo está implementado? Para otros tipos base: Arrays.sort (v1, c) Hay que implementar un Comparator
9
Arrays.sort e interfaces (II)
Para ordenar Fraccion(es): public class ComparadorFracciones implements java.util.Comparator { public int compare (Object o1, Object o2) { Fraccion f1 = (Fraccion)o1; Fraccion f2 = (Fraccion)o2; if (f1.igual(f2)) return 0; else if (f1.mayor(f2)) return 1; else return -1; } } // luego... Comparator comp = new ComparadorFracciones(); Arrays.sort (vecFracciones, comp); Ídem para binarySearch
10
Colecciones de java.util (I)
Las más comunes de Java 1.4:
11
Colecciones de java.util (II)
Tienen elementos de tipo Object. No se sabe qué hay dentro “Casteo” para obtener utilidad No admiten elementos primitivos. Pero hay clases envolventes: Integer, Boolean, Double, Character, etc. Colecciones heredadas: Vector, Hashtable, Stack, BitSet, Properties, etc.
12
Clase Collections Es la Arrays de las colecciones. Algunos métodos:
(una clase utilitaria de métodos estáticos) Algunos métodos: void sort (Collection c, Comparator comp) int binarySearch (Collection c, Object x, Comparator comp) Object max (Collection c, Comparator comp) Object min (Collection c, Comparator comp) void reverse() Collection unmodifiableCollection (Collection c)
13
Iteradores (I) Para definir recorridos. Interfaz: Un ejemplo:
Tomar el primer elemento. Tomar el elemento siguiente. Testear si se termina la colección. Un ejemplo: List v = new ArrayList(); for(int i = 0; i < 10; i++) v.add(new Integer(i)); Iterator it = v.iterator(); // pido un iterador para v while(it.hasNext()) // recorro la colección System.out.println((Integer)it.next());
14
Iteradores (II) Toda clase que implemente Collection puede generar un Iterator con el método iterator Nótese que Iterator es una interfaz Pero está implementada para las colecciones definidas en java.util.
15
Iteradores (III) Llevan la abstracción a los recorridos de colecciones. Facilitan cambios de implementación. No se necesita trabajar con el número de elementos. Convierten a las colecciones en simples secuencias.
16
Definiendo iteradores (I)
17
Definiendo iteradores (II)
public class ListaCircular extends LinkedList { public Iterator iterator( ) { return new IteradorListaCircular(this); } Implementar la clase IteradorListaCircular Con sus métodos next() y hasNext()
18
Definiendo iteradores (otra visión)
19
Otras soluciones Tipos genéricos Clases parametrizadas
También hay iteradores, más ricos Genericidad restringida Eiffel .NET 2.0 Java 5
20
Genericidad (muy breve)
Mejor chequeo en tiempo de compilación ArrayList<String> ls = new ArrayList<String>(); Distinto de “templates” de C++ No es necesario tener el código fuente Genericidad restringida Java “borra” toda la info de tipos parámetros luego de la compilación .NET la mantiene
21
Qué sigue Modelo de datos Reflexión y RTTI Paramos con la programación
Clonación Recolección de basura Reflexión y RTTI Paramos con la programación Desarrollo orientado a objetos Pruebas Documentación Arquitecturas
22
Muchas Gracias. Carlos Fontela, 2008
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.