2011-03-24 29 views
6

Tengo un hashmap en Java y necesito agregar una cadena a una clave específica. Es este código correcto? ¿O no es una buena práctica invocar el método .get para recuperar el contenido original?¿Cómo agregar una cadena a un elemento HashMap?

myMap.put("key", myMap.get("key") + "new content") ; 

gracias

Respuesta

13

Si quiere decir que desea reemplazar el valor actual con un nuevo valor, eso es absolutamente bien.

Tenga en cuenta que si la clave no existe, terminará con "nullnew content" como el nuevo valor, que puede no ser el que usted quería. Usted puede querer hacer:

String existing = myMap.get("key"); 
String extraContent = "new content"; 
myMap.put("key", existing == null ? extraContent : existing + extraContent); 
+0

* "Necesito agregar una cadena a una tecla específica." * Su solución se agrega a un valor en el mapa. – aioobe

+2

@aioobe: el código de Patrick contradice lo que dice. – Jeremy

+0

@aioobe: Lo interpreté como "Necesito agregar una cadena al valor asociado con una clave específica". Tal vez el OP aclarará ... –

3

Tengo un mapa hash en Java y tengo que añadir una cadena a una tecla específica.

Deberá eliminar la asignación y agregar una nueva asignación con la clave actualizada. Esto se puede hacer en una línea de la siguiente manera.

myMap.put(keyToUpdate + toAppend, myMap.remove(keyToUpdate)); 

El método Map.remove elimina una asignación, y devuelve el valor previamente asignada

1

Si hace esto a menudo es posible que desee utilizar StringBuilder.

Map<String, StringBuilder> map = new LinkedHashMap<String, StringBuilder>(); 

StringBuilder sb = map.get(key); 
if (sb == null) 
    map.put(key, new StringBuilder(toAppend)); 
else 
    sb.append(toAppend); 
Cuestiones relacionadas