“空”收集的目的是什么?

时间:2019-08-27 20:17:08

标签: java data-structures collections

我在Collections类中找到emptyEnumeration(),EmptyIterator(),EmptyList()和其他方法。我搜索了示例和目的,但找不到合适的例子。

如果有人可以用项目可用性示例进行解释,那将是一个很大的帮助,我们需要创建emptyList(),并且与不创建任何new ArrayList<>()而不添加任何元素的情况相比,最好使用它。

2 个答案:

答案 0 :(得分:4)

它们实际上返回一个强制转换的单一实例,因此您不必为每次emptyList()的调用在堆上创建新对象。因此它更快,并节省了内存和GC。

这是一个初始化程序,List实现在内部使用这些初始化程序来决定它们是否实际上需要分配空间(甚至添加元素)还是在运行时不添加任何元素的情况下保持列表不变(因为有时会发生这种情况,比您想象的要多)。

那些对象是不可变的,因此您可以在任何地方安全地重用同一实例,而无需通常为确保对象状态完整性而进行的同步。

答案 1 :(得分:2)

空集合的目的是成为一个空集合!如评论中所述,有时将返回集合的方法返回空集合是适当的。

为什么(例如)Collections.emptyList()有用:那么,为什么当您可以重用现有的空列表时创建自己的空列表?这是次要的便利,节省了一些内存。

如果您的代码自然到达了(a)知道需要返回空集合的位置,并且(b)没有“自然地”创建的空集合,这意味着已经创建了一个空集合集合保存结果,然后找不到任何此类结果,那么“集合”工具就很方便。