List对象遍历时null判断

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

1、list为null时空指针异常

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

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

  1 package collection;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 public class CollectionTest {
  7 
  8     /**
  9      * @param args
 10      */
 11     public static void main(String[] args) {
 12 
 13         printEachList(1);
 14         printEachList(2);
 15         printEachList(3);
 16         printEachList(4);
 17         
 18         printIterateList(1);
 19         printIterateList(2);
 20         printIterateList(3);
 21         printIterateList(4);
 22         
 23         /*结论:
 24         list为null时空指针异常
 25         list不为空,但是元素为null时,不执行*/
 26         
 27         //标准写法
 28         {
 29             int key = 2;
 30             List<Long> list = getList(4);
 31             if (null!=list) {//只需要判断null,size=0时不会执行for循环
 32                 for (Long temp : list) {
 33                     if (null == temp) {//temp可能为null,表示list元素指向的对象为null对象,但是元素的值(null对象的引用)不为空
 34                         continue;
 35                     }
 36                     System.out.println(String.format("key_%d:%s", key,temp.toString()));
 37                 }
 38             }
 39         }
 40         
 41         {
 42             Long a = null;
 43             //非静态方法来使用一个值为null的引用类型变量,异常
 44             System.out.println(a.getClass());
 45             //静态方法来使用一个值为null的引用类型变量,正常
 46             System.out.println(Long.getLong("0"));
 47             //静态方法来使用一个值为null的引用类型变量,正常
 48             System.out.println(a.getLong("0"));
 49         }
 50         
 51     }
 52     
 53     
 54     private  static void printEachList(int key){
 55         List<Long> list = getList(key);
 56         try {
 57             for (Long temp : list) {
 58                 System.out.println(String.format("key_%d:%s", key,temp.toString()));
 59             }
 60         } catch (Exception e) {
 61             System.out.println(String.format("key_%d error:%s", key,e.getMessage()));
 62         }
 63     }
 64     
 65     private  static void printIterateList(int key){
 66         List<Long> list = getList(key);
 67         try {
 68             if (null == list) {
 69                 return;
 70             }
 71             for (int i = 0; i < list.size(); i++) {
 72                 if (null==list.get(i)) {
 73                     continue;
 74                 }
 75                 System.out.println(String.format("key_%d:%s", key,list.get(i).toString()));
 76             }
 77         } catch (Exception e) {
 78             System.out.println(String.format("key_%d error:%s", key,e.getMessage()));
 79         }
 80     }
 81     
 82     private  static List<Long> getList(int key){
 83         
 84         List<Long> list = null;
 85         
 86         switch (key) {
 87         case 1:
 88             list = new ArrayList<Long>();
 89             list.add(1L);
 90             list.add(2L);
 91             break;
 92         case 2:
 93             list = new ArrayList<Long>();
 94             list.add(null);
 95             list.add(1L);
 96             break;
 97         case 3:
 98             list = new ArrayList<Long>();
 99             break;
100         default:
101             break;
102         }
103         
104         return list;
105         
106     }
107 
108 }

 

转载于:https://www.cnblogs.com/yushengji/p/6835038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值