2011-11-01 61 views
18

Lo que tengo es HashMap<String, ArrayList<String>> llamado examList. Lo que quiero usar es para guardar las calificaciones de cada curso que asiste una persona. Así que la clave para este HashMap es couresID, y el valor es ArrayList de todos los grados (intentos de examen) que esta persona haya realizado.Java, cómo agregar valores a la lista de arreglos utilizada como valor en HashMap

El problema es que sé cómo trabajar con listas de arreglos y hasmaps normalmente, pero no estoy seguro de cómo comenzar con este ejemplo. Entonces, ¿cómo podría, por ejemplo, agregar algo a ArrayList dentro de HashMap?

Respuesta

34

Puede utilizar la biblioteca de Google Guava, que tiene implementaciones para Mapas de valores múltiples (Apache Commons Collections también tiene implementaciones, pero sin genéricos).

Sin embargo, si usted no desea utilizar un lib externa, entonces usted podría hacer algo como esto:

if (map.get(id) == null) { //gets the value for an id) 
    map.put(id, new ArrayList<String>()); //no ArrayList assigned, create new ArrayList 

map.get(id).add(value); //adds value to list. 
+0

También hay Spring MultiValueMap y LinkedMultiValueMap – eduardohl

+0

Buen ejemplo, exactamente lo que requiere Java n00b como yo. – goelakash

2

En primer lugar, usted tiene que buscar la correcta ArrayList en el HashMap:

ArrayList<String> myAList = theHashMap.get(courseID) 

A continuación, añadir el nuevo grado a la ArrayList:

myAList.add(newGrade) 
6
String courseID = "Comp-101"; 
List<String> scores = new ArrayList<String>(); 
scores.add("100"); 
scores.add("90"); 
scores.add("80"); 
scores.add("97"); 

Map<String, ArrayList<String>> myMap = new HashMap<String, ArrayList<String>>(); 
myMap.put(courseID, scores); 

Espero que esto ayude!

+0

y cómo puedo obtener las claves, los valores? – David

+0

@David Utilice el método keySet() de HashMap. Devolverá todas las claves que en el ejemplo anterior serían Cadenas. Luego, para cada tecla, puede obtener el ArrayList correspondiente utilizando el método get (clave) de HashMap, donde 'clave' son las claves que recuperó anteriormente. ¡Espero que esto ayude! – Mechkov

+0

gracias hombre! Muy útil! – David

3

Primero retreieve el valor (dado una llave) y luego añadir un nuevo elemento a ella

ArrayList<String> grades = examList.get(courseId); 
    grades.add(aGrade); 
4
  • en primer lugar crear HashMap.

    HashMap> mapList = new HashMap>();

  • Obtenga el valor de HashMap en su clave de entrada.

    ArrayList arrayList = mapList.get (clave);

  • Agregue valor a la lista de arrays.

    arrayList.add (addvalue);

  • Luego, nuevamente coloque la lista de arrays contra ese valor clave. mapList.put (clave, arrayList);

Se trabajará .....

+0

¿Es necesario volver a poner el arraylist en el hashmap? o es un elemento agregado por referencia? –

Cuestiones relacionadas