欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

在Java里,理解list!=null、list.size>0和list.isEmpty之间的差异

最编程 2024-02-24 11:35:52
...

1、先解释一下

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()相比,进行非空判断时,这个效率更高

2、list.isEmpty()和list.size()==0的区别:

list.isEmpty()先获取size的值在判断再返回,list.size()则是直接返回属性size的值,相对list.isEmpty()较快。看源码:

 public int size() {
    return size;
 }

 public boolean isEmpty() {
     return size == 0;
 }

从源码可以看出list.isEmpty()比list.size()多操作一步查询。

3、list==null和list.isEmpty()的区别:

判断的时候一定要注意先后顺序 ,最先判断是否存在实物,再判断实物中是否存放东西。如果没有瓶子都没有,直接判断有没有水,是会报nullException的 。

(1)有没有瓶子 list == null
(2)瓶子里有没有水 list.isEmpty()

4、比喻:

我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水需要去买个水杯(new ArrayList(),也就是实例化),我就可以直接装水(list.add(水))。你要是没有杯子new ArrayList(),也就是实例化)直接倒水,水就流出去啦(空指针异常)。所以用做判断的时候经常连用list!=null && list.size()!=0或者list!=null && isEmpty()。

5、总结:

  1. list.size()和list.idEmpty()使用的前提是list已经被实例化,否则会报NullPointer异常
  2. 如果只是做一个非空判断,用list.isEmpty()比用list.size() != 0效率要高
  3. list.add(null)会造成list.isEmpty() 为false,但是list.size()为1, 所以代码里要避免list.add(null)的陷阱

参考:

https://blog.****.net/z15732621582/article/details/78703272