• 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 }
  • 相关阅读:
    (转)在SQL Server 2016,Visual Studio 2017环境下,连接数据库屡屡失败,在connectionString上出的问题
    WPF中,DataGrid最左边多出一行的解决方案
    (转)SQL注入攻击简介
    Bot Framework:Activity类简明指南
    微软Bot Framework文档中,关于Sign-in Card的一处代码错误及更正
    微软分布式机器学习工具包DMTK——初窥门径
    在2017年,如何将你的小米4刷上Windows 10 mobile?(后附大量图赏)
    第十周总结
    产品介绍 宿舍小助手
    博客园 之 “水王”
  • 原文地址:https://www.cnblogs.com/yushengji/p/6835038.html
Copyright © 2020-2023  润新知