1) 如果 Map 可以是不可变的:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
当编译器无法自动确定需要哪种 Map 时(这称为 type inference),您有时必须使用后者。例如,考虑这样声明的方法:
public void foobar(Map<String, String> map){ ... }
当直接将空 Map 传递给它时,您必须明确类型:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2)如果您需要能够修改地图,那么例如:
new HashMap<String, String>()
(如tehblanx pointed out)
附录:如果您的项目使用Guava,您有以下选择:
1) 不可变映射:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
当然,与Collections.emptyMap() 相比,这里没有什么大的好处。 From the Javadoc:
此映射的行为和性能与 Collections.emptyMap() 相当,
并且主要是为了您的一致性和可维护性
代码。
2) 可以修改的地图:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps 也包含用于实例化其他类型地图的类似工厂方法,例如 TreeMap 或 LinkedHashMap。
更新 (2018):在 Java 9 或更高版本中,用于创建不可变空地图的最短代码是:
Map.of()
...使用来自JEP 269 的新convenience factory methods。 ?