You are on page 1of 10

Kata 2.

Arrays asociativos
Ingeniera del software 2
Arrays asociativos
Por qu se llaman arrays asociativos?
Los arrays normales estn indexados por un nmero
entero entre 0..n-1.
Los arrays asociativos se indexan por cualquier objeto,
ese objeto tiene que funcionar como clave.
Cmo se implementan los arrays asociativos en
Java?
La interfaz Map, que est implementada en la clase
HashMap.
Cmo se llaman tambin?
Diccionarios, Mapas.

2
Map
Son estructuras de datos donde cada valor del
array tiene asociado una clave. Esta clave se
usa para recuperarlo.
Se trabaja con dos objetos: uno que se utiliza
como clave (Key) y otra para almacenar los
valores (Value).
Esta estructura de datos nos permite obtener
el valor a partir de su clave.

3
HashMap
Es una implementacin concreta del Map
Por ejemplo, podramos almacenar personas y
utilizar su DNI como clave, o coches y utilizar su
matricula como clave.

4
Mtodos
Value put(Key key, Value value) Aade un nuevo par clave-valor al diccionario.
Value get(Object key) Da el valor asociado a una clave o null si no se
encontr.
Value remove(Object key) Elimina el par clave-valor que corresponde a la clave.
boolean containsKey(Object key) Comprueba si est la clave especificada.

boolean containsValue(Object Comprueba si est el valor.


value)
Set keySet() Devuelve un conjunto con las claves contenidas en el
diccionario.
Collection values() Devuelve una coleccin con solo los valores.
boolean isEmpty() Comprueba si la coleccin est vaca.
int size() Devuelve el nmero de elementos que contiene la
coleccin.
void clear() Elimina todos los elementos de la coleccin.

5
Ejemplo 1
package ejemplohashmap1;

import java.util.HashMap;
public class EjemploHashmap1 {

public static void main(String[] args) {


HashMap<Integer,String> persons = new HashMap<>();
persons.put(42123456, "Marta");
persons.put(41232323, "Ana");
persons.put(32323332, "Luis");

int dni = 42123456;


System.out.println("El dni " + dni + " corresponde a " + persons.get(dni));

}
}

6
Ejemplo 2
package ejemplohashmap2;

import java.util.HashMap;

public class EjemploHashMap2 {

public static void main(String[] args) {


HashMap<String, String> cars = new HashMap<String, String>();
cars.put("GC 1245 BPX", "Seat");
cars.put("3234 YGL", "Citroen");
cars.put("3210 HGL", "Audi");

System.out.println("Size of Cars: " + cars.size());

for (String plate : cars.keySet())


System.out.println(cars.get(plate));
}

7
Ejemplo 3
package ejemplohashmap3;

import java.util.HashMap;

public class EjemploHashMap3 {

public static void main(String[] args) {


HashMap<String,Car> cars = new HashMap<>();
cars.put("GC 1245 BPX", new Car("Audi"));
cars.put("3210 HGL", new Car("Mercedes"));

// Opcin 1

System.out.println("Does cars contains plate GC 1245 BPX: " + cars.containsKey ("GC 1245 BPX"));

Car car = cars.get("GC 1245 BPX");


System.out.println("The model is: " + car.getModel());

// Opcin 2

System.out.println("Does cars contains plate GC 1245 BPX: " + cars.containsKey ("GC 1245 BPX"));
System.out.println("The model is: " + cars.get("GC 1245 BPX").getModel());
}
}

8
Ejemplo 3
package ejemplohashmap3;

public class Car {

private final String model;

public Car(String model) {


this.model = model;
}

public String getModel() {


return model;
}

9
Kata 2
Dado el siguiente vector: [2,2,11,4,2,6,11,2,3,5,11,5]
Se pide realizar una aplicacin para el clculo del histograma, es decir la
frecuencia de cada nmero. El resultado debe ser:
2->4
3->1
4->1
5->2
6->1
11->3

Para realizar el ejercicio se debe hacer uso de un array asociativo

10

You might also like