unmarshall unmarshal marshall marshal jaxbcontext example java string optimization map hashmap

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 ).