Hola usuario de nuestra web, hemos encontrado la solución a tu interrogante, has scroll y la verás a continuación.
Solución:
¿Qué esperas lograr aquí?
A Map
(los HashMap
) en su caso es un “mapeo” directo de uno “key” a otro valor.
P.ej
"foo" -> 123
"bar" -> 321
"far" -> 12345
"boo" -> 54321
Esto significa que si intentaras:
myHashMap.get("foo");
devolvería el valor 123
(por supuesto, el tipo de valor que devuelve puede ser el que desee).
Por supuesto, esto también significa que cualquier cambio que realice en el valor de la keyanula el valor original que le asignó, al igual que cambiar el valor de una variable anulará el original asignado.
Decir:
myHashMap.put("foo", 42);
El antiguo valor de "foo"
en el mapa sería reemplazado con 42
. Entonces se convertiría en:
"foo" -> 42
"bar" -> 321
"far" -> 12345
"boo" -> 54321
Sin embargo, si necesita varios String
objetos que se asignan desde un solo keypodría usar un objeto diferente que puede almacenar varios objetos, como una matriz o una lista (o incluso otra HashMap
si querías.
Por ejemplo, si estuvieras usando ArrayLists
cuando está asignando un valor a la HashMap
(digamos que se llama myHashMap
), primero verificaría si el key se ha utilizado antes, si no lo ha hecho, entonces crea uno nuevo ArrayList
con el valor que desea agregar, si lo tiene, simplemente agregue el valor a la lista.
(Asumir key
y value
tenga los valores que desee)
ArrayList list;
if(myHashMap.containsKey(key))
// if the key has already been used,
// we'll just grab the array list and add the value to it
list = myHashMap.get(key);
list.add(value);
else
// if the key hasn't been used yet,
// we'll create a new ArrayList object, add the value
// and put it in the array list with the new key
list = new ArrayList();
list.add(value);
myHashMap.put(key, list);
¡Puedes hacer así!
Map> map = new HashMap<>();
.
.
if(map.containsKey(key))
map.get(key).add(value);
else
List list = new ArrayList<>();
list.add(value);
map.put(key, list);
O puede hacer lo mismo con un código de línea en estilo Java 8.
map.computeIfAbsent(key, k ->new ArrayList<>()).add(value);
¿Le gustaría una concatenación de las dos cadenas?
map.put(key, val);
if (map.containsKey(key))
map.put(key, map.get(key) + newVal);
¿O le gustaría una lista de todos los valores para eso? key?
HashMap> map = new HashMap>();
String key = "key";
String val = "val";
String newVal = "newVal";
List list = new ArrayList();
list.add(val);
map.put(key, list);
if (map.containsKey(key))
map.get(key).add(newVal);
Ten en cuenta dar visibilidad a esta crónica si lograste el éxito.