1) Se la mappa può essere immutabile:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
Dovrai usare quest'ultimo a volte quando il compilatore non riesce a capire automaticamente che tipo di mappa è necessario (questo è chiamato inferenza del tipo ). Ad esempio, considera un metodo dichiarato in questo modo:
public void foobar(Map<String, String> map){ ... }
Quando passi la mappa vuota direttamente ad essa, devi essere esplicito sul tipo:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Se è necessario essere in grado di modificare la mappa, ad esempio:
new HashMap<String, String>()
(come ha sottolineato tehblanx )
appendice : se il tuo progetto utilizza Guava , hai le seguenti alternative:
1) Mappa immutabile:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
Certo, nessun grande vantaggio qui rispetto a Collections.emptyMap()
. Dal Javadoc :
Questa mappa si comporta e si comporta in modo simile a Collections.emptyMap()
ed è preferibile principalmente per la coerenza e la manutenibilità del codice.
2) Mappa che puoi modificare:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
contiene metodi di fabbrica simili per istanziare anche altri tipi di mappe, come TreeMap
oLinkedHashMap
.
Aggiornamento (2018) : attivato Java 9 o versioni successive, il codice più breve per la creazione di una mappa vuota immutabile è:
Map.of()
... utilizzando i nuovi metodi di fabbrica di convenienza da JEP 269 . 😎