This question already has answers here:
Collections.emptyList() vs. new instance
                                
                                    (7个答案)
                                
                        
                                4个月前关闭。
            
                    
我在Collections类中找到emptyEnumeration(),EmptyIterator(),EmptyList()和其他方法。我搜索了示例和目的,但找不到合适的示例和目的。

如果有人可以用项目可用性示例进行说明,这需要很大的帮助,那就是需要创建emptyList(),并且与不添加任何元素而创建new ArrayList<>()相比,使用它更好。

最佳答案

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

这是一个初始化程序,由List实现在内部使用,以决定它们是否实际上需要分配空间(甚至添加元素)还是保持列表不变(如果在运行时不添加任何元素,因为它有时发生的次数比您可能要多)认为)。

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

10-08 00:40