目录
集合list!=null、list.size()>0和list.isEmpty()的区别
list.isEmpty()和list.size()==0的区别
集合list!=null、list.size()>0和list.isEmpty()的区别
解释
-
list!=null 这是用来判断list这个对象有没有被实例化,但是List list = new ArrayList()在这里list对象已经被实例化了,所以这里没有对list != null进行判断的必要;
-
list.size>0 这个是用来判断list里是不是有内容,所以咯,在执行list.size()>0之前要确保list已经被实例化。list.size()>0这个方法会先计算一下list里元素的个数,然后再和0进行比较
-
list.isEmpty() 判断list里是否有元素,list不需要计算元素个数,直接看一下是否为空,所以和list.size()相比,进行非空判断时,这个效率更高
list.isEmpty()和list.size()==0的区别
list.isEmpty()先获取size的值在判断再返回,list.size()则是直接返回属性size的值,相对list.size()较快。看源码:
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
list==null和list.isEmpty()的区别
判断的时候一定要注意先后顺序 ,最先判断是否存在实物,再判断实物中是否存放东西。如果没有瓶子都没有,直接判断有没有水,是会报nullException的 。
(1)有没有瓶子 list == null
(2)瓶子里有没有水 list.isEmpty()
比喻
我有一个空着的水杯(list),而你没有,那你是null,我的size为0。 你想装水需要去买个水杯(new ArrayList(),也就是实例化),我就可以直接装水(list.add(水))。你要是没有杯子(new ArrayList(),也就是实例化)直接倒水,水就流出去啦(空指针异常)。 所以用做判断的时候经常连用list!=null && list.size()!=0或者list!=null && !list.isEmpty()。
总结
-
list.size()和list.idEmpty()使用的前提是list已经被实例化,否则会报NullPointer异常
-
如果只是做一个非空判断,用list.isEmpty()比用list.size() == 0效率要高(前者直接返回boolean类型)
-
list.add(null)会造成list.isEmpty() 为false,但是list.size()为1, 所以代码里要避免list.add(null)的陷阱
———参考:Java中集合list!=null、list.size()>0和list.isEmpty()的区别 - 简书 (jianshu.com)
对原文部分修改