首页 > 代码库 > 集合框架null与size=0

集合框架null与size=0

被QA人员一眼指出来的问题,唉,好丢人

上栗子??

  如何判断一个集合是空?

技术分享

  运行后会输出什么?

  显然第53行会报运行时错误:java.lang.NullPointerException

为什么呢?

  首先分析第51行与第52行的区别:

    51行:仅声明一个stringList1的引用

    52行:在内存中开辟空间,并将内存地址赋值给stringList2

  使用javap反编译java文件:

技术分享

  大概的意思很显然,第51行源代码就是0,1行,只是声明了一个变量并没有在内存开辟存储空间

怎么判空?

  所以应该先判断是否为null,再判断size>0,这其中还有 || 带来的短路功能

技术分享

  或者直接用:

  import org.apache.commons.collections.CollectionUtils;

  CollectionUtils.isEmpty();

  看一下它的实现:

技术分享

集合框架null与size=0