Eu preciso criar um mapa vazio.
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
O problema é que o código acima produz este aviso: Segurança de tipo: conversão não verificada de Mapa para HashMap
Qual é a melhor maneira de criar este mapa vazio?
java
dictionary
collections
hashmap
JorgeO
fonte
fonte
Respostas:
1) Se o mapa pode ser imutável:
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:
Ao passar o mapa vazio diretamente para ele, você deve ser explícito sobre o tipo:
2) Se você precisa ser capaz de modificar o mapa, por exemplo:
(como tehblanx apontou )
Adendo : se o seu projeto usa Guava , você tem as seguintes alternativas:
1) Mapa imutável:
Concedido, nenhum grande benefício aqui comparado a
Collections.emptyMap()
. Do Javadoc :2) Mapa que você pode modificar:
Maps
contém métodos de fábrica semelhantes para instanciar outros tipos de mapas também, comoTreeMap
ouLinkedHashMap
.Atualização (2018) : No Java 9 ou mais recente, o código mais curto para criar um mapa vazio imutável é:
... usando os novos métodos de fábrica de conveniência da JEP 269 . 😎
fonte
Collections.emptyMap ()
fonte
O método emptyMap da classe Coleções .
fonte
Se você precisa de uma instância de HashMap, a melhor maneira é:
Como Map é uma interface, você precisa escolher alguma classe que o instancie se quiser criar uma instância vazia. HashMap parece tão bom quanto qualquer outro - apenas use isso.
fonte
Ou
Collections.emptyMap()
, se a inferência de tipo não funcionar no seu caso,Collections.<String, String>emptyMap()
fonte
Uma vez que em muitos casos um mapa vazio é usado para design de segurança nula, você pode utilizar o
nullToEmpty
método utilitário:Da mesma forma para conjuntos:
e listas:
fonte
A respeito :
Map <String, String> s = Collections.emptyMap ();
fonte