Necesito crear un mapa vacío.
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
El problema es que el código anterior produce esta advertencia: Tipo de seguridad: Transmitir sin marcar de Map a HashMap
¿Cuál es la mejor forma de crear este mapa vacío?
java
dictionary
collections
hashmap
JorgeO
fuente
fuente
Respuestas:
1) Si el mapa puede ser inmutable:
Tendrá que usar este último a veces cuando el compilador no pueda determinar automáticamente qué tipo de mapa se necesita (esto se llama inferencia de tipo ). Por ejemplo, considere un método declarado así:
Al pasar el Mapa vacío directamente a él, debe ser explícito sobre el tipo:
2) Si necesita poder modificar el Mapa, por ejemplo:
(como señaló tehblanx )
Anexo : Si su proyecto utiliza Guayaba , tiene las siguientes alternativas:
1) Mapa inmutable:
Por supuesto, no hay grandes beneficios aquí en comparación con
Collections.emptyMap()
. Desde el Javadoc :2) Mapa que puedes modificar:
Maps
contiene métodos de fábrica similares para crear instancias de otros tipos de mapas, comoTreeMap
oLinkedHashMap
.Actualización (2018) : en Java 9 o posterior, el código más corto para crear un mapa vacío inmutable es:
... utilizando los nuevos métodos de fábrica de conveniencia de JEP 269 . 😎
fuente
Colecciones.emptyMap ()
fuente
El método emptyMap de la clase Colecciones .
fuente
Si necesita una instancia de HashMap, la mejor manera es:
Dado que Map es una interfaz, debe elegir alguna clase que la instancia si desea crear una instancia vacía. HashMap parece tan bueno como cualquier otro, así que utilícelo.
fuente
O bien
Collections.emptyMap()
, o si la inferencia de tipos no funciona en su caso,Collections.<String, String>emptyMap()
fuente
Dado que en muchos casos se utiliza un mapa vacío para un diseño seguro para nulos, puede utilizar el
nullToEmpty
método de utilidad:De manera similar para los conjuntos:
y listas:
fuente
Qué pasa :
Map <String, String> s = Collections.emptyMap ();
fuente