Programación Orientada a Objeto Contenido: 9. Colecciones ◦ 9.1. Definición ◦ 9.2. Uso de colecciones ◦ 9.3. Ejemplos
Views 90 Downloads 0 File size 1MB
Programación Orientada a Objeto
Contenido: 9. Colecciones ◦ 9.1. Definición
◦ 9.2. Uso de colecciones ◦ 9.3. Ejemplos
Colecciones •Colecciones son objetos que referencian a un grupo de objetos. •A diferencia de los arreglos, las colecciones solamente mantienen referencias a objetos de tipo Object. •Cualquier objeto puede ser almacenado en una colección. •Las colecciones pueden: –Cambiar de tamaño dinámicamente. –Proveer ordenamiento. –insertar y borrar elementos.
Collections Framework
Collections Framework
■ Lists Lista de Cosas/Objetos (classes that implement List). ■ Sets Cosas/Objetos unicos (classes that implement Set).
■ Maps Cosas/Objetos con un ID unico (classes that implement Map). ■ Queues Cosas ordenadas por el orden en el que van a ser procesadas.
Tabla de Clases de Collections
Interface List La interface List extiende de Collection En las listas se maneja el concepto de indice (index), en comparacion con las otras interfaces. ◦ get(int index), indexOf(Object o), add(int index, Object obj) Todas las implementaciones de List estan ordenadas por la posicion del indice. Ya sea cuando manualmente se determina el indice al que va el objeto , o sino el elemento es añadido al final.
List Implementations Vector (No usado en la actualidad)
ArrayList ◦ Podemos decir que un arrayList es un array que puede crecer indefinidamente. ◦ Es rapido para iterar y accede. ◦ Es una collection ordenada por indice.
LinkedList ◦ Linked List esta ordenada por posicion del indice, como el Array List except que los elementos estan doblemente linkeados el uno al otro ( previo nodo, y siguiente nodo) ◦ Provee formas de anadir y remover tanto al principio como al final, lo que la hace mas facil de usar para la implementacion de colas y pilas. ◦ Sin embargo, la iteracion es mas lenta. Es una Buena opcion cuando se necesita rapida insercion y borrado
Ejemplo Array List – Linked List
Iterar una lista
Iteradores La interface ListIterator permite iterar a través de las listas.
Los métodos más comunes del al interfase Iterator son:
Iteradores
Interface Set La interface Set se preocupa de la unicidad. NO PERMITE DUPLICADOS! Recordemos que el metodo .equals determina si dos objetos son iguales. En tal caso solo uno puede ser incluido en el Set.
Implementaciones de Set: HashSet Trabajan basandose en un hashcode (Podemos pensar en el hashcode como un ID por el cual se localizara y se accesara al objeto. No garantiza el orden, y mantiene un tiempo de rendimiento constante en sus operaciones
Implementaciones de Set: LinkedHashSet Mantiene una lista linkeada de entradas en el set, en el orden que fueron insertadas.
Su diferencia mas significativa con un LinkedList es que el LinkedHashSet no admitira duplicados.
Cual seria el resultado del programa anterior, si lo cambiaramos por un LinkedHashSet?
Interface Map La interface Map, le importa solo los identificadores unicos. Mapean un ID unico a un valor especifico. Donde ambos el key y el valor son objetos.
Métodos Importantes Interface Map •Put(): Inserta un elemento en el mapa •Get(): Obtiene un elemento en el map, utilizando el método equals() para verificar la igualdad •keySet(): Este método es usado para obtener un Set de las claves contenidas en el map. •values(): Este método devuelve una colección de los valores contenidos en el map. •entrySet(): Este método es usado para obtener un set de clave y valor, al iterar un Map.Entry de clave y valor
HashMap El hashmap, utiliza un hash table para almacenar un key y un valor de manera desordenada. getKey(): Returns the key for this map entry. getValue(): Returns the value for this map entry. put(K k, V v) Puts an entry in the invoking map, overwriting any previous value associated with the key. The key and value are k and v, respectively. Returns null if the key did not already exist. Otherwise, the previous value linked to the key is returned.
LinkedHashMap Mantiene una lista linkeada de entradas en el mapa en el orden en que fueron insertadas.
Iterando un HashMap ▪ Si se quiere obtener solo las claves del map:
▪ Si se quiere obtener valores
▪Si se quiere obtener claves y valores
Sobrescritura del Metodo equals •El método equals es usado en las colecciones de tipo List, Set, y también Map para determinar si un objeto ya está incluido en la colección
Sobrescritura del Metodo hashcode •Metodo que retorna un valor de tipo entero (int)
•Siempre que se sobrescribe el equals() se debe sobrescribir el hashcode() •Para generar un hashcode podemos usar el metodo hash() de la clase Objects. (Desde Java 7)
Sorting Collections ArrayList no posee ningun metodo sort() Sin embargo Collections, posee el metodo sort()
Interface Comparable La interface Comparable es usada por el metodo Collections.sort() , para ordenar Listas.
La clase String implementa la interface Comparable Para implementar Comparable, una clase debe implementar un solo metodo “compareTo()”
El metodo sort() usa compareTo para determiner como la Lista o Array deberia ser ordenado.
Interface Comparable
TreeSet Crea una colección que usa un árbol para almacenamiento.
Los objetos son almacenados en orden ascendente. El tiempo de acceso es bastante rápido.
TreeSet de Clases Personalizadas Se puede crear un TreeSet de clases personalizadas, el orden estará dado por la implementación de la interface Comparable
En caso de no implementarse dara el error java.Lang. ClassCastException.
TreeMap Almacena los elementos en una estructura de árbol
Garantiza que los elementos estarán ordenados, en orden ascendente con respecto a su clave
Java FX – Colecciones – Control ComboBox