【java】集合实例中“空”的问题

目录

集合list!=null、list.size()>0和list.isEmpty()的区别

解释

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

list==null和list.isEmpty()的区别

比喻

总结


集合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()。

总结

  1. list.size()和list.idEmpty()使用的前提是list已经被实例化,否则会报NullPointer异常

  2. 如果只是做一个非空判断,用list.isEmpty()比用list.size() == 0效率要高(前者直接返回boolean类型)

  3. list.add(null)会造成list.isEmpty() 为false,但是list.size()为1, 所以代码里要避免list.add(null)的陷阱

———参考:Java中集合list!=null、list.size()>0和list.isEmpty()的区别 - 简书 (jianshu.com)

对原文部分修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值