1) Se o mapa pode ser imutável:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
Você terá que usar o último às vezes, quando o compilador não puder descobrir automaticamente que tipo de mapa é necessário (isso é chamado de inferência de tipo ). Por exemplo, considere um método declarado assim:
public void foobar(Map<String, String> map){ ... }
Ao passar o mapa vazio diretamente para ele, você deve ser explícito sobre o tipo:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Se você precisa ser capaz de modificar o mapa, por exemplo:
new HashMap<String, String>()
(como tehblanx apontou )
Adendo : se o seu projeto usa Guava , você tem as seguintes alternativas:
1) Mapa imutável:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
Concedido, nenhum grande benefício aqui comparado a Collections.emptyMap()
. Do Javadoc :
Este mapa se comporta e tem um desempenho comparável Collections.emptyMap()
e é preferível principalmente pela consistência e facilidade de manutenção do seu código.
2) Mapa que você pode modificar:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
contém métodos de fábrica semelhantes para instanciar outros tipos de mapas também, como TreeMap
ou LinkedHashMap
.
Atualização (2018) : No Java 9 ou mais recente, o código mais curto para criar um mapa vazio imutável é:
Map.of()
... usando os novos métodos de fábrica de conveniência da JEP 269 . 😎