1) Si el mapa puede ser inmutable:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
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í:
public void foobar(Map<String, String> map){ ... }
Al pasar el Mapa vacío directamente a él, debe ser explícito sobre el tipo:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Si necesita poder modificar el Mapa, por ejemplo:
new HashMap<String, String>()
(como señaló tehblanx )
Anexo : Si su proyecto utiliza Guayaba , tiene las siguientes alternativas:
1) Mapa inmutable:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
Por supuesto, no hay grandes beneficios aquí en comparación con Collections.emptyMap()
. Desde el Javadoc :
Este mapa se comporta y funciona de manera comparable Collections.emptyMap()
y es preferible principalmente por la coherencia y el mantenimiento de su código.
2) Mapa que puedes modificar:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
contiene métodos de fábrica similares para crear instancias de otros tipos de mapas, como TreeMap
o LinkedHashMap
.
Actualización (2018) : en Java 9 o posterior, el código más corto para crear un mapa vacío inmutable es:
Map.of()
... utilizando los nuevos métodos de fábrica de conveniencia de JEP 269 . 😎