1) Wenn die Karte unveränderlich sein kann:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
Letzteres müssen Sie manchmal verwenden, wenn der Compiler nicht automatisch herausfinden kann, welche Art von Map benötigt wird (dies wird als Typinferenz bezeichnet ). Stellen Sie sich zum Beispiel eine Methode vor, die wie folgt deklariert ist:
public void foobar(Map<String, String> map){ ... }
Wenn Sie die leere Karte direkt an sie übergeben, müssen Sie den Typ explizit angeben:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Wenn Sie die Karte ändern müssen, dann zum Beispiel:
new HashMap<String, String>()
(wie Tehblanx betonte )
Nachtrag : Wenn Ihr Projekt Guava verwendet , haben Sie folgende Alternativen:
1) Unveränderliche Karte:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
Zugegeben, keine großen Vorteile hier im Vergleich zu Collections.emptyMap()
. Aus dem Javadoc :
Diese Zuordnung verhält sich vergleichbar und funktioniert vergleichbar mit Collections.emptyMap()
und ist vor allem aus Gründen der Konsistenz und Wartbarkeit Ihres Codes vorzuziehen.
2) Karte, die Sie ändern können:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
enthält ähnliche Factory-Methoden zum Instanziieren anderer Kartentypen, z. B. TreeMap
oder LinkedHashMap
.
Update (2018) : Unter Java 9 oder neuer lautet der kürzeste Code zum Erstellen einer unveränderlichen leeren Karte:
Map.of()
... mit den neuen Convenience Factory-Methoden von JEP 269 . 😎