java - unmarshal - Conversión de Map<String, String> a Map<String, Object>
string xml to object java (3)
Puede usar el método putAll para resolver el problema. El Object es la clase padre de todos los objetos, por lo que puede usar putAll sin convertir.
Tengo dos mapas
Map<String, String> filterMap
Map<String, Object> filterMapObj
Lo que necesito es Me gustaría convertir ese Map<String, String>
a Map<String, Object>
. Aquí estoy usando el código
if (filterMap != null) {
for (Entry<String, String> entry : filterMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
Object objectVal = (Object)value;
filterMapObj.put(key, objectVal);
}
}
Funciona bien, ¿hay otras formas en que puedo hacer esto sin iterar a través de todas las entradas en el mapa?
Puede usar el operador comodín para esto. Defina filterMapObj
como Map<String, ? extends Object> filterMapObj
filterMapObj
Map<String, ? extends Object> filterMapObj
y puede asignarle directamente filterMap
. Puede aprender sobre el operador comodín de genéricos
Puedes usar putAll
:
filterMapObj.putAll(filterMap);
(Ver el Javadoc .)
Editado para agregar: debo señalar que el método anterior es más o menos equivalente a iterar sobre los elementos del mapa: hará su código más limpio, pero si su razón para no querer iterar sobre los elementos es en realidad un problema de rendimiento ( por ejemplo, si su mapa es enorme), entonces no es probable que lo ayude. Otra posibilidad es escribir:
filterMapObj = Collections.<String, Object>unmodifiableMap(filterMap);
que crea una "vista" filterMap
de filterMap
. Eso es más restrictivo, por supuesto, ya que no le permitirá modificar filterMapObj
y filterMap
independiente. ( filterMapObj
no se puede modificar, y cualquier modificación a filterMap
también afectará a filterMapObj
).