阅读量:1
文章目录
概要
在Java开发中,我们经常需要处理集合(如ArrayList
)的情况。为了确保程序的稳定性和正确性,我们必须妥善处理空集合和空指针。
示例代码
public class Main { public static void main(String[] args) { ArrayList<String> list1 = new ArrayList<>(); ArrayList<String> list2 = null; System.out.println("list1:" + list1.size()); if (CollectionUtils.isEmpty(list1)) { System.out.println("list1为空"); } if (list2 == null) { System.out.println("list2为空"); } // 这一行会抛出NPE异常 System.out.println("list2:" + list2.size()); } }
详细解释如下
初始化集合:
ArrayList<String> list1 = new ArrayList<>(); ArrayList<String> list2 = null;
list1
被初始化为空的ArrayList
,即使没有元素,它也不是null
。list2
被初始化为null
,它没有指向任何对象。
打印
list1
的大小:System.out.println("list1:" + list1.size());
list1
是一个空的ArrayList
,因此list1.size()
将返回0
。
检查
list1
是否为空:if (CollectionUtils.isEmpty(list1)) { System.out.println("list1为空"); }
- 这里使用了
CollectionUtils.isEmpty
方法来检查list1
是否为空。它不仅检查集合是否为空
,还检查集合是否为null
。 - 由于
list1
是一个空的ArrayList
,CollectionUtils.isEmpty(list1)
返回true
,所以会打印“list1为空”。
- 这里使用了
检查
list2
是否为null
:if (list2 == null) { System.out.println("list2为空"); }
- 直接检查
list2
是否为null
,因为list2
没有被初始化为一个集合对象,所以list2 == null
为true
,会打印“list2为空”。
- 直接检查
尝试打印
list2
的大小:System.out.println("list2:" + list2.size());
- 这一行代码会抛出
NullPointerException
异常,因为list2
是null
,不能调用size()
方法。
- 这一行代码会抛出
正确处理集合的技巧
使用
CollectionUtils.isEmpty
方法:- 同时检查集合是否为空或
null
- 示例:
if (CollectionUtils.isEmpty(list)) { /* 集合为空或为null */ }
- 同时检查集合是否为空或
在操作集合前检查是否为
null
:- 在对集合进行操作前,确保集合不为
null
。这可以防止NullPointerException
。 - 示例:
if (list != null && !list.isEmpty()) { /* 对集合进行操作 */ }
- 在对集合进行操作前,确保集合不为
初始化集合:
- 尽量避免将集合初始化为
null
,可以将其初始化为空集合,避免多次null
检查。 - 示例:
ArrayList<String> list = new ArrayList<>();
- 尽量避免将集合初始化为
总结
通过上述方法,可以有效地避免在处理集合时遇到的常见问题,确保程序的稳定性和健壮性。在开发中,良好的编码习惯和对可能出现的异常情况的处理至关重要。
处理其他集合类型(例如HashMap、HashSet等)时,原则上与处理ArrayList类似的哦。
❤觉得有用的可以留个关注~❤