天天看点

关于list集合判断时要同时判断null和size的问题

记录一下昨天看到项目之前同事判断一个list的时候只判断了llist!=null,因此而出现了问题

1.list==null,意味着list压根没有地址,在堆内就不存在,说明没有进行初始化。这时list调用任何的方法都会抛出空异常

2.list.size( )= 0,意思是堆内有list,但是还没有放元素,其长度随着元素数量变化而变化,暂时为零。list.size( )==0说明list已经被new过,但是里面没有值。

因此只判断list!=null的话,那就是说有这个list集合但是还没有数据,所以size==0,这样去获取list.get(0)的时候就会没有对象,因此报

index(0),size(0)这个错误:

if(voList!=null){
   if(voList.size()>1) {
       for (ManagerVO mvo : voList) {
            auditpeoplelist.append(mvo.getId());
            auditpeoplelist.append(",");
       }               auditProcessItem.setAuditpeoplelist(auditpeoplelist.substring(0,auditpeoplelist.length()-1));
        }else{
         //这里如果volist.size==0的话就会拿不到对象,会报index(0),size(0)的错误
         auditpeoplelist.append(voList.get(0).getId());
         auditProcessItem.setAuditpeoplelist(auditpeoplelist.toString());
        }
    }else{
          auditProcessItem.setAuditpeoplelist(auditProcessVO.getId().toString())
}
           

反推一下,如果只判断list.size>0时,list万一为null呢?你集合都没有,自然是会报空指针异常:

if(voList.size>0){
   if(voList.size()>1) {
       for (ManagerVO mvo : voList) {
            auditpeoplelist.append(mvo.getId());
            auditpeoplelist.append(",");
       }               auditProcessItem.setAuditpeoplelist(auditpeoplelist.substring(0,auditpeoplelist.length()-1));
        }else{
          //如果voList==null的话,那么这里会报空指针异常
          auditpeoplelist.append(voList.get(0).getId());
          auditProcessItem.setAuditpeoplelist(auditpeoplelist.toString());
        }
    }else{
          auditProcessItem.setAuditpeoplelist(auditProcessVO.getId().toString())
}
           

总结就是:

1、如果直接判断size>0,如果list == null,那程序报空指针的错

2、如果只判断list == null,那list内的数据还是可能为空

因此我们给list做非空判断时要满足list!=null&&list.size>0这两个条件

最后的最后:写文章不容易啊,亲若是喜欢或者对你有帮助记得点赞+关注或者收藏呦~就酱,啾咪~