设想下,当我们要先查询数据,而后遍历列表时的常用代码写法
第一种:
List a = getList();//有可能返回是null
if(a != null){
for(...){
}
}
第二种:
List a = = getList();//当无结果时返回空列表
for(...){
}
作为列表的使用者,我们当然希望后者的写法 因此 在 getList方法返回空列表 一般我们会这样写:
...
return new ArrayList();
但是这样会占用内存,程序被高并发调用n次时,占用的内存为n份,积少成多,因此jdk提供了Collections.emptyList()方法,该方法返回一个final形式且全局唯一的静态的空列表(不允许任何改动,无法添加元素)。这样就算有无数次调用也只占用一份内存。
同时Collections下还有类似的emptyMap,emptySet等等