list集合为空或为null的区别
简述
判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事。
新建一个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{ 做其他处理}
list集合为空或为null的区别的更多相关文章
- [Java]list集合为空或为null的区别
判断的是list这个集合的问题,当前需要判断list内值的问题. 简述判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null, ...
- Java空字符串与null的区别和判断字符串是否为空的方法
Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...
- 3-java中String值为空字符串与null的判断方法
java中String值为空字符串与null的判断方法 2018年01月21日 14:53:45 阅读数:1189 Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个 ...
- Java中应该返回零长度数组或空集合,而不是返回null(转)
说明:为了避免在数组和集合的获取上增加null的判断,同时也能减少不必要的空指针异常,通常会在业务返回零数组或空集合. 方法: 1.数组: 定义全局静态常量来减少内存开销:private static ...
- 判断List集合为空还是null的正确打开方式
事故场景还原 最近在写一个项目的时候遇到一个这样一个问题,我简单的还原一下场景,这是模拟一个简单的管理系统 ① 一张简单的客户表 CREATE TABLE customer( id INT(11) N ...
- mybatis判断集合为空或者元素个数为零
mybatis判断集合为空或者元素个数为零: <if test="mlhs != null and mlhs.size() != 0"> and t.mlh_name ...
- 解决CsvWriter:中文乱码、末尾行多一行空格(/r)、非第一列空字符串""显示null问题
一:主要内容 解决CsvWriter存csv,csv文件打开后中文乱码问题 解决CsvWriter存csv,csv文件最后一行总是多一行空行的问题 解决CsvWriter存csv,csv文件不是第一列 ...
- Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值
Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值 Thinkphp 的文档经常不够完整的表达MYSQL的各种组合,is not null在thinkp ...
- Oracle坑之-空字符串与NULL
空字符串与NULL 首先有如下代码 SELECT * FROM Pdc_DataDomain DD INNER JOIN Pdc_DD_Table DDT ON DD.DataDomainID = D ...
随机推荐
- oracle学习笔记(1)-三级模式SCHEMA
oracle三级模式及二级映像 模式(schema)是数据库的一个名词,大部分的数据库在结构上都有三级模式的特征,了解下基本的概念,有助于后续深入的学习. 用老罗坚果pro发布会的话说就是,不罗嗦,先 ...
- 如何查询oracle中的关键字
如何查询oracle中的关键字,执行: select * from v$reserved_words
- php下拉菜单选中值在选择之后保留并且显示
<select id="select_platform" name="source" style="height:35px;"> ...
- textarea禁止拖拽
<textarea style="resize:none;" ></textarea>'
- Visual Studio Debugger中七个鲜为人知的小功能
Visual Studio debugger是一个很棒的调试工具,可以帮助程序猿们快速地发现和解决问题.这里给大家简单介绍一下VS调试工具中的七个鲜为人知的小功能. 1. 一键跳转到指定语句 调 ...
- 【Android Developers Training】 72. 缩放一个视图
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- js原生获取className&多选一
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MySQL(三)--函数与谓词
前文已有涉及,这里作为总结重新整理一下. 一.函数 1.算术函数 NUMERIC 是大多数 DBMS 都支持的一种数据类型,通过 NUMBERIC ( 全体位数, 小数位数 ) 的形式来指定数值的大小 ...
- Android 测试 Appium、Robotium、monkey等框架或者工具对比
1. Appium测试 (功能测试,用户接受度测试,黑盒测试) - Rating: 8 Appium测试相当于黑盒测试.只是测试UI逻辑正确性.所以Appium测试框架提供的方法有限.获取一个Appi ...
- Echarts展示百分比的问题
22.echarts 想要自定义tooltip 的百分比的时候,可以在formatter中console.log(params); 当鼠标移动到y轴的时候会触发输出;