1) Если карта может быть неизменной:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
Иногда вам придется использовать последнее, когда компилятор не может автоматически определить, какой тип карты необходим (это называется выводом типа ). Например, рассмотрим метод, объявленный так:
public void foobar(Map<String, String> map){ ... }
Передавая пустую карту напрямую ей, вы должны явно указать тип:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Если вам необходимо изменить карту, например:
new HashMap<String, String>()
(как указал Техбланкс )
Приложение : Если в вашем проекте используется Guava , у вас есть следующие альтернативы:
1) Неизменяемая карта:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
Конечно, здесь нет больших преимуществ по сравнению с Collections.emptyMap()
. Из Javadoc :
Эта карта ведет себя и работает примерно так же Collections.emptyMap()
, как и она, и предпочтительна в основном для согласованности и удобства сопровождения вашего кода.
2) Карта, которую можно изменить:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
содержит аналогичные фабричные методы для создания экземпляров других типов карт, например TreeMap
или LinkedHashMap
.
Обновление (2018) : на Java 9 или новее кратчайший код для создания неизменяемой пустой карты:
Map.of()
... используя новые удобные фабричные методы из JEP 269 . 😎