在本文中,您将会了解到关于为什么有人会在Java中使用Collections.emptyList?的新资讯,同时我们还将为您解释java为什么使用集合的相关在本文中,我们将带你探索为什么有人会在Jav
在本文中,您将会了解到关于为什么有人会在Java中使用Collections.emptyList?的新资讯,同时我们还将为您解释java为什么使用集合的相关在本文中,我们将带你探索为什么有人会在Java中使用Collections.emptyList?的奥秘,分析java为什么使用集合的特点,并给出一些关于Collections.emptyList() 与新实例、Collections.emptyList()与新实例、Collections.emptyList()和Collections.EMPTY_LIST有什么区别、Collections.emptyList()而不是null检查?的实用技巧。
本文目录一览:- 为什么有人会在Java中使用Collections.emptyList?(java为什么使用集合)
- Collections.emptyList() 与新实例
- Collections.emptyList()与新实例
- Collections.emptyList()和Collections.EMPTY_LIST有什么区别
- Collections.emptyList()而不是null检查?
为什么有人会在Java中使用Collections.emptyList?(java为什么使用集合)
我试图了解使用以下命令创建列表的新实例之间的区别:
new ArrayList<X>
和
Collections.emptyList();
据我了解,稍后将返回一个不可变的列表。这意味着无法添加,删除或修改它。我想知道为什么会创建一个不可变的emptyList?有什么用?谢谢
答案1
小编典典假设您必须返回一个集合,并且您不想每次都创建几个对象。
interface Configurable { List<String> getConfigurationList();}// class which doesn''t have any configurationclass SimpleConfigurable implements Configurable { public List<String> getConfigurationList() { return Collections.emptyList(); }}
返回空集合通常比返回更可取 null
Collections.emptyList() 与新实例
在实践中,最好返回一个这样的空列表:
return Collections.emptyList();
或者像这样:
return new ArrayList<Foo>();
还是这完全取决于您将如何处理返回的列表?
Collections.emptyList()与新实例
在实践中,是能够更好地返回一个空列表像这样:
return Collections.emptyList();
或者像这样:
return new ArrayList<Foo>();
还是这完全取决于您要对返回的列表执行什么操作?
答案1
小编典典主要区别是Collections.emptyList()
返回一个
不可变的
列表,即不能向其添加元素的列表。(同样适用List.of()
于Java
9中引入的内容。)
在极少数情况下,您 就 需要修改返回的列表,Collections.emptyList()
并List.of()
因此 不是 一个好的选择。
我想说,只要合同(文档)没有明确声明不同的状态,返回一个不可变的列表就很好(甚至是首选的方式)。
此外,emptyList()
可能不会在每次调用时都创建一个新对象。
此方法的实现无需为每个调用创建单独的List对象。使用此方法可能具有与使用类似名称的字段相当的成本。(与这种方法不同,该字段不提供类型安全性。)
执行的emptyList
外观如下:
public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST;}
因此,如果经常调用您的方法(返回一个空列表),则此方法甚至可以在CPU和内存方面为您提供更好的性能。
Collections.emptyList()和Collections.EMPTY_LIST有什么区别
在Java中,我们具有Collections.emptyList()和Collections.EMPTY_LIST。两者具有相同的属性:
返回空列表(不可变)。该列表是可序列化的。
那么使用一个或另一个之间的确切区别是什么?
答案1
小编典典Collections.EMPTY_LIST
返回旧样式List
Collections.emptyList()
使用类型推断,因此返回List<T>
在Java 1.5中添加了Collections.emptyList(),它可能始终是首选 。这样,您无需在代码中不必要地转换。
Collections.emptyList()
从内在上 为你 做演员。
@SuppressWarnings("unchecked")public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST;}
Collections.emptyList()而不是null检查?
如果我在某个类中有一个很少使用的集合,该集合可能被实例化很多次,则有时我可能会求助于以下“习惯用法”以节省不必要的对象创建:
List<Object> list = null;
void add(Object object) {
if (list == null)
list = new ArrayList<Object>();
list.add(object);
}
// somewhere else
if (list != null)
for (Object object : list)
;
现在,我想知道是否无法使用来消除这些空检查Collections.emptyList()
,但是我将不得不add()
像这样更改if检查:
if (list == Collections.<Object>emptyList())
list = new ArrayList<Object>();
除了每次都分配一个新的空集合以外,还有更好的方法来处理此问题吗?
编辑: 为了清楚起见,我 想
使用Collections.emptyList(),但是在add()中进行上述检查确实非常丑陋……我想知道是否有更好的方法甚至是其他方法处理这个。
我们今天的关于为什么有人会在Java中使用Collections.emptyList?和java为什么使用集合的分享已经告一段落,感谢您的关注,如果您想了解更多关于Collections.emptyList() 与新实例、Collections.emptyList()与新实例、Collections.emptyList()和Collections.EMPTY_LIST有什么区别、Collections.emptyList()而不是null检查?的相关信息,请在本站查询。
本文标签: