list集合为空或为null的区别

list集合为空或为null的区别简述判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事。引用举个形象的例子,我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水就需要自己去买个水杯(new ArrayList();),但是我就可以直接装水(list.add(水))。你要是没有杯子直接倒水,水就流出…

大家好,又见面了,我是你们的朋友全栈君。

简述

判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事。

引用

举个形象的例子,我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水就需要自己去买个水杯(new ArrayList();),但是我就可以直接装水(list.add(水))。你要是没有杯子直接倒水,水就流出去啦(空指针异常)。

判断

那么,我们什么时候用null,什么时候用isEmpty()或list.size()呢?

  • 空集合

      isEmpty() 或者(list.size() == 0)用于判断List内容是否为空,即表里一个元素也没有, 但是使用isEmpty()和size()的前提是,list是一个空集合,而不是null,所以为了避免异常,建议在使用或赋值list集合之前,做一次空集合创建处理,进行内存空间分配,即:

   List list2 = new ArrayList()

list.isEmpty()和list.size()==0 没有区别, isEmpty()判断有没有元素,而size()返回有几个元素,如果判断一个集合有无元素,建议用isEmpty()方法. 这清晰,简明

  • null判断 
    list等于null,可理解为没有对list集合分配内存空间,实际上压根就不存在。

建议

所以,两者之间的区别,你懂了吧? 
建议在编码时,采用: 

if(list != null && !list.isEmpty()){
    这个里面取list中的值
}else{
    做其他处理
}

1、如果想判断list是否为空,可以这么判断:

if(null == list || list.size() ==0 ){
  //为空的情况
}else{
  //不为空的情况
}

2、list.isEmpty() 和  list.size()==0  有啥区别呢

    答案:没有区别 。isEmpty()判断有没有元素,而size()返回有几个元素, 如果判断一个集合有无元素 建议用isEmpty()方法.比较符合逻辑用法。

3、list!=null  跟  ! list.isEmpty()有什么区别?

这就相当与,你要要到商店买东西
 list!=null         首先判断是否有商店
!list.isEmpty()     没有判断商店是否存在,而是判断商店是否有东西
总结用法:如果连商店都没有,何来的的东西可卖
所以一般的判断是
if(list!=null && !list.isEmpty()){
   //不为空的情况
}else{
   //为空的情况
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147144.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(二)——自定义安装

    使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(二)——自定义安装自定义产品卸载方式        继续从上一次的基础上前进,现在我们已经知道了最简单的bootstrapper打包方法,现在我们对其中的每个节点深入自定义,争取可以达到我们需要的效果。先把最后全部的XML贴出来。

    2022年7月20日
  • tkmybatis通用mapper实现在使用Example进行查询的几种方式

    如下列举四种方式,但是不止四种哦。其中weekend方式需要升级jdk到1.8及以上。废话不代码!首先定义数据库表映射类:publicclassMybatisDemo{privateLongid;privateLongcount;privateStringname;publicLonggetId(){…

  • C++临界锁CCriticalSection在线程中的使用

    C++临界锁CCriticalSection在线程中的使用#define_AFXDLL#include<afxmt.h>#include<iostream>usingnamespacestd;CCriticalSectioncritical;inttick=0;DWORDWINAPIFunc1(LPVOIDlpParam);DWORD__stdcallFunc1(LPVOIDlpParam){critical.Lock();tick+=10;cout&lt.

  • python线性规划模型求解_python线性规划算法

    python线性规划模型求解_python线性规划算法各位童鞋们大家好,我是小小明,前几天我给大家分享了一个SMT求解器z3,链接地址见:https://xxmdmst.blog.csdn.net/article/details/120279521虽然SMT求解器很强大,能够解逻辑题、解数独、解方程、甚至解决逆向问题,但是有个缺点就是只能找出一个可行解,如果我想要找出可行解的最大值或最小值就不行,无法完成类似Excel的规划求解的功能。前文中已经提到了scipy这个库可以进行线性规划求解,可惜我在这周的实际测试中发现,不支持整数约束,只能求解出实数。差.

  • 第一高分大省——河北,新高考正式执行,权威政策解读来了!其他省很可能参照河北模式!

    第一高分大省——河北,新高考正式执行,权威政策解读来了!其他省很可能参照河北模式!第一高分大省——河北,新高考正式执行,权威政策解读来了!其他省很可能参照河北模式!1、语数外和6选3组合方案提出,2021年开始,考生总成绩由统一高考的语文、数学、外语3个科目成绩和高中学业水平考试3个科目成绩组成。 2、语数外分值不变 统一高考的语文、数学、外语科目分值不变。 3、不分文理科 4、外语可以考两次 外语科目提供两次考试机会。 …

  • java的class文件_java class是什么意思

    java的class文件_java class是什么意思根据 Java 虚拟机规范,类文件由单个 ClassFile 结构组成:ClassFile { u4 magic; //Class 文件的标志 u2 minor_version;//Class 的小版本号 u2 major_version;//Class 的大版本号 u2 constant_pool_count;//常量池的数量 cp_info consta

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号