J'ai besoin de créer une carte vide.
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
Le problème est que le code ci-dessus génère cet avertissement: Sécurité de type: Cast non coché de Map vers HashMap
Quelle est la meilleure façon de créer cette carte vide?
java
dictionary
collections
hashmap
JorgeO
la source
la source
Réponses:
1) Si la carte peut être immuable:
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:
Lorsque vous lui passez directement la carte vide, vous devez être explicite sur le type:
2) Si vous avez besoin de pouvoir modifier la carte, alors par exemple:
(comme l' a souligné tehblanx )
Addendum : Si votre projet utilise Guava , vous avez les alternatives suivantes:
1) Carte immuable:
Certes, pas de gros avantages ici par rapport à
Collections.emptyMap()
. Depuis le Javadoc :2) Carte que vous pouvez modifier:
Maps
contient des méthodes d'usine similaires pour instancier également d'autres types de cartes, telles queTreeMap
ouLinkedHashMap
.Mise à jour (2018) : Sur Java 9 ou plus récent, le code le plus court pour créer une carte vide immuable est:
... en utilisant les nouvelles méthodes d'usine de confort de JEP 269 . 😎
la source
Collections.emptyMap ()
la source
La méthode emptyMap de la classe Collections .
la source
Si vous avez besoin d'une instance de HashMap, le meilleur moyen est:
Puisque Map est une interface, vous devez choisir une classe qui l'instancie si vous souhaitez créer une instance vide. HashMap semble aussi bon que n'importe quel autre - alors utilisez-le.
la source
Soit
Collections.emptyMap()
, soit si l'inférence de type ne fonctionne pas dans votre cas,Collections.<String, String>emptyMap()
la source
Étant donné que dans de nombreux cas, une carte vide est utilisée pour une conception de sécurité nulle, vous pouvez utiliser la
nullToEmpty
méthode utilitaire:De même pour les ensembles:
et listes:
la source
Qu'en est-il de :
Map <String, String> s = Collections.emptyMap ();
la source