当前位置: 首页 > 面试题库 >

Collections.emptyMap()与新的HashMap()

阮星火
2023-03-14
问题内容

我可以使用哪些情况Collections.emptyMap()?文档说,如果我希望我的收藏集是不可变的,则可以使用此方法。

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


问题答案:

有效的Java项目#43 - "Return empty arrays or collections, not null"演示返回一个空的集合,甚至演示如何使用这些emptyList()emptySet()emptyMap()对集合类的方法来得到一个空的集合,也有保持不变的额外好处。从
项目#15开始 "Minimize Mutability"

来自Collections-emptySet-Collections-emptyList-
Collections

它是一种编程习语。这适用于不希望使用null变量的人。因此,在初始化集合之前,他们可以使用空集合。

注意: 以下代码仅是示例(根据您的用例进行更改):

private Set myset = Collections.emptySet();

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

这些方法具有两个优点:

  1. 它们更加简洁,因为您无需显式键入集合的泛型类型-通常仅从方法调用的上下文中进行推断。

  2. 它们效率更高,因为它们不必费心创建新对象。他们只是重复使用一个现有的空且不可变的对象。通常,这种影响很小,但偶尔(非常,很少)很重要。



 类似资料:
  • 问题内容: 如果将新文档索引到Elasticsearch索引,则可在索引操作后1秒钟左右搜索新文档。但是,可以通过调用或对索引进行操作来强制使该文档可立即搜索。这两个操作之间有什么区别- 结果似乎对他们来说是相同的,可以立即搜索文档。 这些操作中的每一项到底是什么? ES文档似乎并未深入解决此问题。 问题答案: 您得到的答案是正确的,但我认为值得详细说明。 刷新有效地调用了Lucene索引读取器上

  • 问题内容: 我正在将PHP 5.3库转换为可在PHP 5.2上使用。阻碍我前进的主要因素是使用后期静态绑定,例如,如果将其转换为,将会得到相同的结果吗? 和之间有什么区别? 问题答案: 我会得到相同的结果吗? 并不是的。不过,我不知道针对PHP 5.2的解决方法。 和之间有什么区别? 指的是实际写入关键字的同一类。 在PHP 5.3的最新静态绑定中,指的是您在层次结构中调用方法的任何类。 在以下示

  • 问题内容: 之间有什么区别(如果有) 和 我应该使用哪一个? 问题答案: 该规范说: 当作为函数而不是构造函数调用时,它将创建并初始化一个新的Array对象。因此,函数调用等效于具有相同参数的对象创建表达式。

  • 问题内容: 创建String 的最佳构造是什么?是(来自番石榴)还是? 只是个人喜好吗? 还是仅仅是Type泛型类型推断? 还是使用Lists.newArrayList()有任何理论或实践价值? 问题答案: 番石榴构建器保存多次键入type参数。比较: 但是在Java 7中,它已经过时了,因为您拥有菱形运算符:

  • 从类和对象创建的锁有什么区别吗? 在中,我看到了这段代码,我想知道的想法,而不仅仅是

  • 在Android Studio中创建一个新目录和创建一个新文件夹有什么区别? 下面是菜单选项的图像: