程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(3)

Java中List判空问题白话详解

发布于2020-11-19 20:56     阅读(899)     评论(0)     点赞(18)     收藏(4)


Java中List判空问题

记录下关于java编程过程中,对于获取数据放入list集合之后的判断,往往出现空指针这种坑。

前言

在实际的编程过程中,需要通过数据库查询等方式获取数据,但是此时需要根据获取到的数据量进行判断,决定后续的业务处理逻辑,数据往往添加到List集合中,因此涉及到对List集合的判空方式。

对"空"的理解

Java对于“空”的理解和常识不太相同,可以理解为编程中需要判断不存在内容没有的区别,也就是null""的区别。

通俗的来讲:就是去判断两个空间是否存在的区别。好比现在告诉你有两个杯子:杯子A杯子B,其中杯子A压根就不存在,null就相当于这种情况;而杯子B存在但里面是空的没有任何东西,这就相当于""

结合程序

实例化两个杯子,杯子1(list1)和杯子2(list2),然后分别执行倒水的操作。

先倒杯子1的水,判断是否为空,写了5个if,分别表示

1、杯子1不存在

2、杯子1里面没有水

3、杯子1不存在或杯子1没有水

4、杯子1没有水或杯子1不存在

5、杯子1存在同时杯子1有水

接着倒杯子2的水,也是判断是否为空。
其中:list.isEmpty()方法等价于list.size()==0

package action;

import java.util.ArrayList;

public class TestList {
	
	private static ArrayList<?> list1 = null;
	private static ArrayList<?> list2 = new ArrayList<String>();
	
	private static void daoshui1() {
		//1		
		if(list1==null)
			System.out.println("杯子1不存在");
		//2
		try {
			if(list1.isEmpty()) 
				System.out.println("杯子1里面没有水");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//3 
		if(list1==null||list1.isEmpty()) {
			System.out.println("杯子1不存在或杯子1没有水");
		}
        //4
		try {
			if(list1.isEmpty()||list1==null) {
				System.out.println("杯子1没有水或杯子1不存在");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        //5
		if(list1!=null&&!list1.isEmpty()) {
			System.out.println("杯子1存在同时杯子1有水");
		}
	}
	
	private static void daoshui2() {
		
		//1		
		if(list2==null)
			System.out.println("杯子2不存在");
		//2
        if(list2.isEmpty()) 
            System.out.println("杯子2里面没有水");
		//3 
		if(list2==null||list2.isEmpty()) {
			System.out.println("杯子2不存在或杯子2没有水");
		}
        //4
        if(list2.isEmpty()||list2==null)
            System.out.println("杯子2没有水或杯子2不存在");
        //5
		if(list2!=null&&!list2.isEmpty()) {
			System.out.println("杯子2存在同时杯子2有水");
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		daoshui1();
		daoshui2();

	}

}

运行结果

在这里插入图片描述

可以看到对杯子1判断是否有水的操作都报错了,可以理解为,杯子都不存在怎么判断,系统都找不到你说的杯子1,就报个错给你看看。

接着向后看,if(list1==null||list1.isEmpty())没有报错,是因为||或从左到右,当判断为null之后,就判定为true了,也就不判断是不是没有水了。第4个if判断中换了个顺序就报错了也是这个道理,先对一个不存在的实物判断有没有就会报错。5不报错也是这道理,当判断不为null的时候就已经判定为false了。

杯子2之所以能够完成所有的判断,是因为杯子2是真实存在的(分配了内存),只是里面没有东西。

总结

综上,对于一个集合或容器判空的时候,首先要进行null的判断,再进行空的判断。也就是看东西是不是真的存在之后再判断里面有没有东西。

原文链接:https://blog.csdn.net/jerrygaoling/article/details/109749919



所属网站分类: 技术文章 > 博客

作者:javagogogo

链接:http://www.javaheidong.com/blog/article/896/dd8114c2f80250f4e344/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)