使用for循环遍历list处理list元素时,对null值判断:

1、list为null时空指针异常

2、list不为空,但是list.size()=0时,不执行for循环内代码块

3、list.size()>0,执行for循环,但循环的对象可能为null

 package collection;

 import java.util.ArrayList;
import java.util.List; public class CollectionTest { /**
* @param args
*/
public static void main(String[] args) { printEachList(1);
printEachList(2);
printEachList(3);
printEachList(4); printIterateList(1);
printIterateList(2);
printIterateList(3);
printIterateList(4); /*结论:
list为null时空指针异常
list不为空,但是元素为null时,不执行*/ //标准写法
{
int key = 2;
List<Long> list = getList(4);
if (null!=list) {//只需要判断null,size=0时不会执行for循环
for (Long temp : list) {
if (null == temp) {//temp可能为null,表示list元素指向的对象为null对象,但是元素的值(null对象的引用)不为空
continue;
}
System.out.println(String.format("key_%d:%s", key,temp.toString()));
}
}
} {
Long a = null;
//非静态方法来使用一个值为null的引用类型变量,异常
System.out.println(a.getClass());
//静态方法来使用一个值为null的引用类型变量,正常
System.out.println(Long.getLong("0"));
//静态方法来使用一个值为null的引用类型变量,正常
System.out.println(a.getLong("0"));
} } private static void printEachList(int key){
List<Long> list = getList(key);
try {
for (Long temp : list) {
System.out.println(String.format("key_%d:%s", key,temp.toString()));
}
} catch (Exception e) {
System.out.println(String.format("key_%d error:%s", key,e.getMessage()));
}
} private static void printIterateList(int key){
List<Long> list = getList(key);
try {
if (null == list) {
return;
}
for (int i = 0; i < list.size(); i++) {
if (null==list.get(i)) {
continue;
}
System.out.println(String.format("key_%d:%s", key,list.get(i).toString()));
}
} catch (Exception e) {
System.out.println(String.format("key_%d error:%s", key,e.getMessage()));
}
} private static List<Long> getList(int key){ List<Long> list = null; switch (key) {
case 1:
list = new ArrayList<Long>();
list.add(1L);
list.add(2L);
break;
case 2:
list = new ArrayList<Long>();
list.add(null);
list.add(1L);
break;
case 3:
list = new ArrayList<Long>();
break;
default:
break;
} return list; } }

List对象遍历时null判断的更多相关文章

  1. List对象遍历时null判断逻辑梳理

          凡是对集合list,set,map,数组等进行循环一定要判断是否为null,增强代码的健壮性.下面以list为例, 使用for循环遍历list对象,处理其中的元素时,需要对null值判断: ...

  2. Java判断对象是否为NULL

    Java使用反射判断对象是否为NULL 判断Java对象是否为null可以有两层含义: 第一层:  直接使用 object == null 去判断,对象为null的时候返回true,不为null的时候 ...

  3. Java判断对象是否为Null/空

    package com.taiping.test; import java.lang.reflect.Field; import java.lang.reflect.Type; /** * <p ...

  4. 空对象模式(Null Object Pattern)

    空对象模式:用一个空对象来取代null实例的检查,空对象实现一个不做任何动作的关系.(消除如if(Object == null) 这样的检查null实例代码) 例子: public abstract ...

  5. C#检查foreach为null判断

    1.foreach遍历列表或数组时,如果list或数组为null,就会报错,如下图: 2.不知道微软封装foreach的为什么不先检查要遍历的对象是否为null,这样就导致,我们在写代码时,遍历列表时 ...

  6. 设计模式:空对象模式(Null Object Pattern)

    设计模式:空对象模式(Null Object Pattern) 背景 群里聊到<ASP.NET设计模式>,这本书里有一个“Null Object Pattern”,大家就闲聊了一下这个模式 ...

  7. 检查对象是否为NULL或者为Empty

    不管是在Winform开发,还是在asp.net 开发中当从一个数据源中获取数据时你总是不知道这个数据的状态,这个时候总要对她进行一次判断,不过每次进行一次判断总是要写怎么一堆代码,时间长了,总感觉不 ...

  8. 用LinQ扩展方法,泛型扩展方法,实现自定义验证字符是否空、对象是否为null,及泛型约束使用,Action的使用

    一.Linq扩展方法 1.扩展方法必须是静态方法.扩展方法所在的类必须是静态类 2.扩展方法里面的参数必须制定this关键字,紧跟需要扩展的类型,如下: 二.泛型约束 1.使用泛型的原因,是在不知道需 ...

  9. String的非空判断、Integer的非空判断、list的大小判断,对象的非空判断

    1.String的非空判断. StringUtils.isNotEmpty(String str); 2.Integer的非空判断. null != Integer ; 3.list的大小判断. li ...

随机推荐

  1. wpf 判断项目中的某个窗体是否已经打开或者已经存在

    foreach (Window item in Application.Current.Windows) {     if (item is window1) return; }

  2. OpenCV安装和测试

    参考链接:http://blog.csdn.net/bruce_zeng/article/details/7961153 OpenCv下载链接:http://sourceforge.net/proje ...

  3. 小程序wxs是作用

    wxs weixin script,小程序的脚本语言:可以结合wxml构建页面结构: 说白了 就是在小程序里面写函数表达式的地方: wxml里面直接使用wxs,有错误再次刷新就能解决 <wxs ...

  4. oracel数据泵导出导入

    Oracle11g 使用数据泵导入/导出数据 expdp/impdp 目标:使用oracle数据泵,将A电脑上的数据库databaseA导出后,再导入到B电脑上的数据库databaseB中. A电脑上 ...

  5. vue项目中使用特殊字体

    项目开发中遇到要是有‘数字’字体的情况,样式如下 网上查了一下实现的方法很简单,而且具体的实现方式大致相同,可以参考以下几个链接: https://www.cnblogs.com/zhangnan35 ...

  6. 使用SSH命令行远程登录运行在CloudFoundry上的应用

    当我试图用如下命令行采用SSH远程登录到运行在CloudFoundry环境下的应用时, cf ssh -N -T -L 9229:127.0.0.1:9229 jerry-demo-server 遇到 ...

  7. 第二章、前端之css

    目录 第二章.前端之css 一.css介绍 二.css语法 三.css几种引入方式 四.css选择器 五.css属性相关 六.css盒子模型 第二章.前端之css 一.css介绍 css(Cascad ...

  8. idHTTP.Post

    procedure TForm4.Button2Click(Sender: TObject); var sResponse: string; EnvStr : TStringStream; begin ...

  9. 遍历二叉树 - 基于队列的BFS

    之前学过利用递归实现BFS二叉树搜索(http://www.cnblogs.com/webor2006/p/7262773.html),这次学习利用队列(Queue)来实现,关于什么时BFS这里不多说 ...

  10. windows下如何打开.sketch的文件

    1 .sketch的文件只能在苹果mac上支持的一种文件格式,现在越来越多的设计师喜欢用.sketch 2 windows下如果想打开.sketch文件,去Microsoft store 找一个Lun ...