1) Si la carte peut être immuable:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
Vous devrez parfois utiliser ce dernier lorsque le compilateur ne peut pas automatiquement déterminer le type de carte nécessaire (cela s'appelle l' inférence de type ). Par exemple, considérons une méthode déclarée comme ceci:
public void foobar(Map<String, String> map){ ... }
Lorsque vous lui passez directement la carte vide, vous devez être explicite sur le type:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Si vous avez besoin de pouvoir modifier la carte, alors par exemple:
new HashMap<String, String>()
(comme l' a souligné tehblanx )
Addendum : Si votre projet utilise Guava , vous avez les alternatives suivantes:
1) Carte immuable:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
Certes, pas de gros avantages ici par rapport à Collections.emptyMap()
. Depuis le Javadoc :
Cette carte se comporte et fonctionne de manière comparable à Collections.emptyMap()
, et est préférable principalement pour la cohérence et la maintenabilité de votre code.
2) Carte que vous pouvez modifier:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
contient des méthodes d'usine similaires pour instancier également d'autres types de cartes, telles que TreeMap
ou LinkedHashMap
.
Mise à jour (2018) : Sur Java 9 ou plus récent, le code le plus court pour créer une carte vide immuable est:
Map.of()
... en utilisant les nouvelles méthodes d'usine de confort de JEP 269 . 😎