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>()
(как указано tehblanx )
Приложение : Если ваш проект использует Гуава , у вас есть следующие альтернативы:
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 . ?