使用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 }
时间: 2024-11-01 23:57:44