集合的判断:list == null,list.size() == 0,isEmpty() == true有什么区别和联系?null 和空集合的区别? 目录1. 前言2. 集合对象的判空 if(list null){......}3. 集合长度 size() 方法 if(list.size() 0){......}4. 集合判空方法 isEmpty() 方法5. isEmpty() 和 size() 的联系6. 开发常见的集合判断逻辑1. 前言集合 List 是我们在开发过程中非常常用的这两天我在做一个功能的时候用 PostMan 测试接口总是报空指针异常后来经过调试发现了问题所在原因就是对于数组的判断方式有误所以写这篇文章记录下来防止以后再犯类似的错误也为了给小伙伴分享让小伙伴们在日后开发过程中也可以避。2. 集合对象的判空 if(list null){......}null 我们通常用来描述一个对象不管是包装类型或者是数组列表对象亦或者是自定义类对象如果一个集合对象为空则就不能调用任何一个方法否则会报空指针异常Test public void testNull(){ ListInteger list null; list.add(123); System.out.println(list); }如下创建一个集合赋值为 null调用 add 方法就会报 NullPointerException 空指针异常3. 集合长度 size() 方法 if(list.size() 0){......}size() 方法则是返回集合的长度也就是集合中元素的个数如果集合中没有元素则返回0方法返回值为int ;如下代码测试代码Test public void testSize(){ ListInteger list new ArrayList(); // 不添加数据判断长度 int size1 list.size(); System.out.println(size1); // 添加一个数据判断长度 list.add(1); int size2 list.size(); System.out.println(size2); // 新建一个数组赋值为null判断长度 ListLong list2 null; int size3 list2.size(); System.out.println(size3); }运行在控制台得到输出结果新建的空集合size1 0添加一个元素之后size2 1新建一个集合 list2 赋值为null调用 size() 方法爆出空指针异常4. 集合判空方法 isEmpty() 方法isEmpty() 方法是Java提供的一个针对集合是否为空的判断方法isEmpty()方法是判断集合是否为空方法返回值为boolean测试代码如下Test public void testNull(){ ListInteger list new ArrayList(); // 不添加数据判断长度 boolean bol1 list.isEmpty(); System.out.println(bol1); // 添加一个数据判断长度 list.add(1); boolean bol2 list.isEmpty(); System.out.println(bol2); // 新建一个数组赋值为null判断长度 ListLong list2 null; boolean bol3 list2.isEmpty(); System.out.println(bol3); }从上面也可以看出集合中有元素方法返回 false集合中没有元素方法返回 true 若集合为空抛出空指针异常5. isEmpty() 和 size() 的联系如下在 List 接口的源码中可以找出此二者。而我们可以在 ArrayList 类的源码中有新的发现该类中定义了 size 变量默认初始化为0若集合长度为0说明集合为空否则集合必定不为空。所以从另一个角度来讲isEmpty() 方法本质上是调用了 size() 方法。ArrayList 类的 isEmpty 方法的方法体实际上是对集合的长度是否为0做判断。6. 开发常见的集合判断逻辑在实际开发的过程中我们对数组的元素个数做判断通常会采用以下两种方式。方式一if (list ! null !list.isEmpty()){......}第一步首先判断集合是否为 null第二步然后再判断集合是否为空isEmpty() 方法前面加 ! 取反值所以括号内综合表达意思就是 如果集合 list 不是 null 并且集合 list 不为空说明有数据满足判断条件说明集合中含有数据再去执行括号内部的逻辑对集合中的数据做处理方式二if (list ! null list.size() 0){......}第一步首先判断集合是否为 null第二步然后再判断集合的长度 size() 是否大于0大于0就说明有数据所以括号内综合表达意思就是 如果集合 list 不是 null 并且集合长度大于0其实也是不为空有数据的意思满足判断条件说明集合中含有数据再去执行括号内部的逻辑对集合中的数据做处理这里再提醒一句开发过程中调用查询接口通常会返回批量数据我们会用集合来接收在处理数据之前一定要对集合做 null 判断否则如果数据库中原本就没有数据接受结果的对象也就是 null 如果不做 null 判断会报空指针异常