42
Universidad de Cuenca Facultad de Ingeniería Tema: Mapas y Diccionarios – Colecciones Parametrizadas Programación 3

Programación 3: mapas y diccionarios, colecciones parametrizadas

Embed Size (px)

Citation preview

Page 1: Programación 3: mapas y diccionarios, colecciones parametrizadas

Universidad de CuencaFacultad de Ingeniería

Tema: Mapas y Diccionarios – Colecciones Parametrizadas

Programación 3

Page 2: Programación 3: mapas y diccionarios, colecciones parametrizadas

Contenido Mapas y Diccionarios Dictionary HashTable Map HashMap TreeMap Colecciones Parametrizadas Declaración de tipo parametrizado

Page 3: Programación 3: mapas y diccionarios, colecciones parametrizadas

Mapas y Diccionarios Un diccionario agrupa elementos identificados mediante

claves únicas. Es una colección cuyos elementos son pares y están

formados por un dato y su clave, que identifica de manera unívoca al elemento.

Los diccionarios son contenedores asociativos, también denominados mapas.

Page 4: Programación 3: mapas y diccionarios, colecciones parametrizadas

Contenido Mapas y Diccionarios Dictionary HashTable Map HashMap TreeMap Colecciones Parametrizadas Declaración de tipo parametrizado

Page 5: Programación 3: mapas y diccionarios, colecciones parametrizadas

dictionary La clase abstracta Dictionary es la interfaz para crear

diccionarios en las colecciones históricas (Vector, Stack, Dictionary, HashTable, Enumeration) y procesa la colección como si fuera un array asociativo al que se accede por una clave.

La llave y el valor de cada elemento son de tipo objeto.

Page 6: Programación 3: mapas y diccionarios, colecciones parametrizadas

dictionaryMétodos Descripción

boolean isEmpty () Retorna true si el diccionario está vacío, y devuelve false si contiene al menos una llave.

int size () Retorna el número de entradas en el diccionario.

Enumeration keys () Retorna una enumeración de las llaves que existen dentro del diccionario.

Enumeration elements () Retorna una enumeración de los valores contenidos en el diccionario.

Object get () Retorna el objeto que contiene el valor asociado con una llave. Si la llave no está en el diccionario, se devuelve null.

Object put (Object key, Object value)

Inserta una valle y su valor dentro del diccionario. Si la llave y su valor ya existen en el diccionario, no lo inserta y devuelve el mismo valor.

Object remove (Object key) Remueve la llave y su valor. Retorna el valor asociado con la llave. Si la llave no se encuentra en el diccionario, retorna null.

Page 7: Programación 3: mapas y diccionarios, colecciones parametrizadas

Contenido Mapas y Diccionarios Dictionary HashTable Map HashMap TreeMap Colecciones Parametrizadas Declaración de tipo parametrizado

Page 8: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashtable HashTable extiende Dictionary, permitiendo que se pueda

utilizar para agrupar datos asociativos. HashTable se comporta como una tabla hash. Dispersa los

elementos según el código que devuelve el método hashCode() del objeto clave.

Page 9: Programación 3: mapas y diccionarios, colecciones parametrizadas

hashtable La clase de los objetos “clave” debe disponer del método int

hashCode(), utilizado para dispersar el elemento. También deben disponer del método equals() para poder

realizar búsquedas y comparaciones.

Page 10: Programación 3: mapas y diccionarios, colecciones parametrizadas

hashtable

El método hashCode(). Sirve para comparar objetos de una forma más rápido en

estructuras Hash, ya que solo devuelve un número entero (key).

Page 11: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashtable

Constructores Descripción

public Hashtable(); Instancia una tabla vacía, con capacidad inicial de 11 y un factor de carga de 0.75.

public Hashtable(int cap); Instancia una tabla vacía, con capacidad inicial de cap y un factor de carga de 0.75.

public Hashtable(int cap, float factorCarga); Instancia una tabla vacía, con una capacidad inicial de cap y un factor de carga de factorCarga.

public Hashtable(Map mapa); Instancia una tabla con los elementos de mapa.

Page 12: Programación 3: mapas y diccionarios, colecciones parametrizadas

HashtableFactor de carga.

f(n, N) = n / N

Page 13: Programación 3: mapas y diccionarios, colecciones parametrizadas

hashtable

Métodos Descripciónvoid putAll (Map mapa); Inserta todos los elementos de mapa dentro de la

Hashtable.

boolean containsValue (Object valor);Devuelve true si encuentra valor en el conjunto de valores de la Hashtable, devuelve false en caso contrario.

boolean containsKey (Object clave);Devuelve true si encuentra clave en el conjunto de claves de la Hashtable, devuelve false en caso contrario.

Set keySet (); Devuelve un conjunto de claves de la Hashtable.

Collection values (); Devuelve una colección con los valores de la Hashtable.

Set entrySet (); Devuelve un conjunto con los elementos de la Hashtable.

Page 14: Programación 3: mapas y diccionarios, colecciones parametrizadas

hashtable

Page 15: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashtable

Page 16: Programación 3: mapas y diccionarios, colecciones parametrizadas

hashtable

Page 17: Programación 3: mapas y diccionarios, colecciones parametrizadas

Contenido Mapas y Diccionarios Dictionary HashTable Map HashMap TreeMap Colecciones Parametrizadas Declaración de tipo parametrizado

Page 18: Programación 3: mapas y diccionarios, colecciones parametrizadas

map Almacenan información formada por parejas (valor, clave). Java 2 incluye a sus librerías la interfaz Map, la cual no

deriva de Collection.

La interfaz Map establece el comportamiento común de todos las implementaciones concretas de diccionarios.

Page 19: Programación 3: mapas y diccionarios, colecciones parametrizadas

MapMétodos Descripción

int size() Retorna el número de entradas en el mapa.

boolean isEmpty() Retorna true si el mapa está vacío, y devuelve false si contiene al menos una llave.

boolean containsValue (Object valor);

Devuelve true si encuentra valor en el conjunto de valores del mapa, devuelve false en caso contrario.

boolean containsKey (Object clave);

Devuelve true si encuentra clave en el conjunto de claves del mapa, devuelve false en caso contrario.

Object get() Retorna el objeto que contiene el valor asociado con una llave. Si la llave no está en el mapa, se devuelve null.

Object put(Object key, Object value)

Inserta una clave y su valor dentro del mapa. Si la llave ya existe, reemplaza el valor antiguo y devuelve éste, en caso contrario null.

void putAll (Map mapa); Inserta todos los elementos de mapa dentro de un nuevo mapa.

Set keySet (); Devuelve un conjunto de claves del mapa.

Collection values (); Devuelve una colección con los valores del mapa.

Set entrySet (); Devuelve un conjunto con los elementos del mapa.

Page 20: Programación 3: mapas y diccionarios, colecciones parametrizadas

Contenido Mapas y Diccionarios Dictionary HashTable Map HashMap TreeMap Colecciones Parametrizadas Declaración de tipo parametrizado

Page 21: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashmap Organizan los elementos en una tabla hash, a su vez

proporciona una eficiencia constante a las operaciones de búsqueda e inserción.

Sus elementos pares (clave, valor) se guardan en un array de objetos de tipo Entry: Entry [ ] tabla.

Permite que haya claves y valores null.

Page 22: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashmap

Constructores Descripción

public HashMap(); Instancia un HashMap vacío, con capacidad inicial de 11 y un factor de carga de 0.75.

public HashMap(int cap); Instancia un HashMap vacío, con capacidad inicial de cap y un factor de carga de 0.75.

public HashMap(int cap, float factorCarga);

Instancia un HashMap vacío, con una capacidad inicial de cap y un factor de carga de factorCarga.

public HashMap(Map mapa); Instancia un HashMap con los elementos de mapa.

Page 23: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashmap Dispone de los métodos heredados de AbstractMap y los

definidos al implementar la interfaz Map. Se pueden buscar elementos por clave o valor con

containsKey() y containsValue().

Insertar un elemento con put(), o insertar todos los elementos de otro mapa con putAll().

Eliminar un elemento por argumento con remove(). Obtener el conjunto de claves con keySet(), una colección de

valores con values() y un conjunto de elementos con entrySet().

Obtener el valor de una clave con get().

Page 24: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashmap

Métodos Descripción

public Object getKey(); Devuelve la clave de la entrada.

public Object getValue(); Devuelve el valor de la entrada.

public Object setValue(Object nuevoVal);

Cambia el valor de la entrada por el que se recibe como parámetro nuevoVal, y devuelve el valor antiguo.

public String toString(); Devuelve una cadena de la entrada, de formato: “clave = valor”.

Page 25: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashmap

Page 26: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashmap

Page 27: Programación 3: mapas y diccionarios, colecciones parametrizadas

Hashmap

Page 28: Programación 3: mapas y diccionarios, colecciones parametrizadas

Contenido Mapas y Diccionarios Dictionary HashTable Map HashMap TreeMap Colecciones Parametrizadas Declaración de tipo parametrizado

Page 29: Programación 3: mapas y diccionarios, colecciones parametrizadas

treemap Mantiene en orden sus elementos utilizando la estructura

árbol rojo-negro.

Se ordena según su campo clave. La clase Treemap implementa los métodos de la interfaz

SortedMap para la ordenación de sus claves. Al igual que HashMap, Treemap incluye la definición de la

clase static Entry.

Page 30: Programación 3: mapas y diccionarios, colecciones parametrizadas

treemap

Los Árboles Rojo-Negro: Todo nodo es rojo o es negro. El nodo raíz siempre es negro. Todas las hojas (Null) son negras. Todo nodo rojo debe tener dos nodos hijos negros. Cada camino desde un nodo dado a sus hojas

descendientes contiene el mismo número de nodos negros.

Page 31: Programación 3: mapas y diccionarios, colecciones parametrizadas

treemap

Constructores Descripción

public TreeMap(); Construye un nuevo TreeMap vacío, utilizando el orden natural de las claves.

public TreeMap(Comparator c); Construye un nuevo TreeMap vacío, utilizando el orden de c.

public TreeMap(Map mapa);Construye un nuevo TreeMap con los elementos de mapa. Ordenados según el orden natural de sus claves.

public TreeMap(SortedMap mapa);

Construye un nuevo TreeMap con los elementos de mapa. Ordenados según el orden que especificado en mapa.

Page 32: Programación 3: mapas y diccionarios, colecciones parametrizadas

treemap

Métodos DescripciónSortedMap subMap(Object desde, Object hasta);

Devuelve un mapa ordenado acotado por desde y hasta.

SortedMap headMap(Object hasta);Devuelve un mapa ordenado cuyas claves son menores que hasta.

SortedMap tailMap(Object desde);Devuelve un mapa ordenado cuyas claves son mayor o igual que desde.

Object firstKey(); Devuelve la primera clave del mapa.

Object lastKey(); Devuelve la última clave del mapa.

Page 33: Programación 3: mapas y diccionarios, colecciones parametrizadas

treemap

Page 34: Programación 3: mapas y diccionarios, colecciones parametrizadas

treemap

Page 35: Programación 3: mapas y diccionarios, colecciones parametrizadas

Contenido Mapas y Diccionarios Dictionary HashTable Map HashMap TreeMap Colecciones Parametrizadas Declaración de tipo parametrizado

Page 36: Programación 3: mapas y diccionarios, colecciones parametrizadas

Colecciones parametrizadas Las colecciones históricas de Java guardan internamente

elementos de tipo Object. Se consigue una máxima generalización, permitiendo que

una colección guarde elementos de cualquier tipo.

Page 37: Programación 3: mapas y diccionarios, colecciones parametrizadas

COLEcciones parametrizadas Al recuperar elementos de la lista es necesario discernir el

tipo concreto de elemento.

Page 38: Programación 3: mapas y diccionarios, colecciones parametrizadas

COLEcciones parametrizadas

Ventajas de usar Colecciones Parametrizadas:

El compilador no aceptará que se agregue ningún tipo de dato distinto al especificado en la instanciación de la clase.

No es necesario añadir los castings al recuperar los datos homogéneos de una colección Object.

Se mantiene un mayor control sobre la colección.

Page 39: Programación 3: mapas y diccionarios, colecciones parametrizadas

COLEcciones parametrizadas Java amplía la declaración de todas las clases e interfaces

relacionados con colecciones para dotarlas de la posibilidad de parametrizar el tipo que va a tener los elementos de una colección.

Page 40: Programación 3: mapas y diccionarios, colecciones parametrizadas

Declaracion de un tipo parametrizado

Al nombre de la colección le sigue el tipo de los elementos entre paréntesis angulares.

Si se parametrizan dos tipos, como ocurre en los mapas, se separan por comas.

Page 41: Programación 3: mapas y diccionarios, colecciones parametrizadas

diferencia

  Null keys Null values Order Synchronized

Performance

HashTable Prohibited Prohibited No Yes Medium

HashMap Permited Permited No No High

TreeMap Prohibited Permited Yes No Low

Page 42: Programación 3: mapas y diccionarios, colecciones parametrizadas

¿Que coleccion usar?