Collection s.emptyMap()vs New HashMap()

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我可以用什么情况Collections.emptyMap()是吗?文档说,如果我希望我的集合是不可变的,我可以使用这个方法。

为什么我想要一个不可变的空集合?有什么意义?

提问于
用户回答回答于

注:下面的代码只是一个示例(根据用例更改它):

private Set myset = Collections.emptySet();

void initSet() {
   myset = new HashSet();
}
void deleteSet() {
   myset = Collections.emptySet();
}

这些方法具有以下几个优点:

  1. 它们更简洁,因为您不需要显式地键入集合的泛型类型--通常只是从方法调用的上下文中推断出来。
  2. 它们更高效,因为它们不需要创建新对象;它们只是重复使用现有的空对象和不可变对象。这种影响通常很小,但它偶尔重要。
用户回答回答于

在我个人的经验中,在API需要参数集合但没有什么可提供的情况下,它是非常有用的。例如,可能有一个类似于此的API,并且不允许空引用:

public ResultSet executeQuery(String query, Map<String, Object> queryParameters);

如果有一个不接受任何参数的查询,那么创建一个HashMap(它涉及分配一个数组)肯定有点浪费,因为可以传入“空Map”(实际上是一个常量),即它的实现方式。java.util.Collections

扫码关注云+社区