获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实

本文探讨了在使用集合对象前进行非空及size大于0的判断的重要性,避免空指针异常,并介绍了使用CollectionUtils工具类简化判断过程的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发过程中,凡是获取到一个集合对象,在利用或者说遍历这个集合对象之前,都要进行是否为null以及size()>0的判断,但是如果size()>0的话,不是就已经可以说明此集合对象不为null吗?为什么多此一举判断集合对象是否为null呢?
原来,如果集合对象为null的话直接调用size()方法会报空指针异常,这显然是不想看到的,所以在调用size()方法之前,要先判断集合对象是否为null,推荐使用commons-collections-XXX.jar包中的CollectionUtils工具类中的静态方法,如:

if (!CollectionUtils.isEmpty(resultList)) {  

}  

同理,如果一个集合为null,则调用length获取长度时会报空指针异常,根据索引获取元素时也会报空指针异常。


@Test  
public void testListAndArray() {  
    List<String> list = new ArrayList<String>();  
    System.out.println(list);  
    System.out.println(list.size());  
    String[] strArr = new String[0];  
    System.out.println(strArr.length);  
    for (String str : strArr) {  
        System.out.println(str);  
    }  
    System.out.println("over");  
}  

分析得知:
1.System.out.println(new ArrayList())的结果不是null,而是一对中括号,里面不包含任何元素,size为0,遍历什么也得不到;
2.System.out.println(new String[0])的结果也不是null,而是数组对象,但是数组不包含任何元素,数组的长度为0,遍历什么也得不到。
原址

public void testIsEmpty(){

    class Person{}
    class Girl extends Person{}

    List<Integer> first = new ArrayList<>();
    List<Integer> second = null;
    List<Person> boy = new ArrayList<>();
    //每个男孩心里都装着一个女孩
    boy.add(new Girl());
    //判断集合是否为空
    System.out.println(CollectionUtils.isEmpty(first));   //true
    System.out.println(CollectionUtils.isEmpty(second));   //true
    System.out.println(CollectionUtils.isEmpty(boy));   //false

    //判断集合是否不为空
    System.out.println(CollectionUtils.isNotEmpty(first));   //false
    System.out.println(CollectionUtils.isNotEmpty(second));   //false
    System.out.println(CollectionUtils.isNotEmpty(boy));   //true
}

原址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值