1) Jeśli mapa może być niezmienna:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
Będziesz musiał użyć tego ostatniego czasami, gdy kompilator nie może automatycznie określić, jaki rodzaj mapy jest potrzebny (nazywa się to wnioskiem o typie ). Na przykład rozważmy metodę zadeklarowaną w ten sposób:
public void foobar(Map<String, String> map){ ... }
Przekazując pustą mapę bezpośrednio do niej, musisz wyraźnie określić typ:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Jeśli musisz mieć możliwość modyfikowania mapy, to na przykład:
new HashMap<String, String>()
(jak wskazał tehblanx )
Dodatek : Jeśli Twój projekt wykorzystuje guawę , masz następujące alternatywy:
1) Niezmienna mapa:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
To prawda, nie ma tu dużych korzyści w porównaniu z Collections.emptyMap()
. Z Javadoc :
Ta mapa zachowuje się i działa podobnie jak Collections.emptyMap()
i jest preferowana głównie ze względu na spójność i łatwość utrzymania Twojego kodu.
2) Mapa, którą możesz modyfikować:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
zawiera podobne metody fabryczne do tworzenia wystąpień innych typów map, takich jak TreeMap
lub LinkedHashMap
.
Aktualizacja (2018) : W Javie 9 lub nowszej najkrótszy kod do tworzenia niezmiennej pustej mapy to:
Map.of()
... używając nowych metod fabrycznych z JEP 269 . 😎