集合框架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();

  看一下它的实现:

时间: 2025-01-31 06:47:58

集合框架null与size=0的相关文章

为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢,岂不是多此一举吗?

List list=new ArrayList();1.如果是以上这样的话,lis不为null 但是size=0 这样集合对于之后的判断是没用的, 甚至是报异常,如list.get(0.......n)这样取值判断,就会报异常. 2.如果先判断size 再判断null 如:if(list.size>0){};这种情况如果list 等于null 时那么list.size会报空指针异常 所以要双重判断这样写最好if(list !=null && list.size>0){};

java.util 集合框架集合

java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Collection接口,并提供了iterator()方法来返回一个迭代器.用add()方法添加对象,remove方法()删除元素,clear()删除集合所有元素(size=0),contains()方法查看集合是否包含对象,toArray()方法返回集合元素数组,equals()方法比较两个集合是否相等,s

java集合框架04——LinkedList和源码分析

上一章学习了ArrayList,并分析了其源码,这一章我们将对LinkedList的具体实现进行详细的学习.依然遵循上一章的步骤,先对LinkedList有个整体的认识,然后学习它的源码,深入剖析LinkedList. LinkedList简介 首先看看LinkedList与Collection的关系: LinkedList的继承关系如下: java.lang.Object ? java.util.AbstractCollection<E> ? java.util.AbstractList&l

集合判断null

Java 引用和指针差不多,null 引用 相当于 C++的空指针. isEmpty() 用于判断List内容是否为空,即表里一个元素也没有, 但是必须在 List<MallNews> getNewsList 本身不是空的引用的情况下才行. 即对象本身不能是空对象. 这里似乎需要联合应用 null和 isEmpty() if(getNewsList != null){ if(! getNewsList.isEmpty()){ ..... } } getNewsList  != null &am

List集合返回null,判断选择isEmpty还是!=null又或者list.size()==0?

事故场景还原 最近在写一个项目的时候遇到一个这样一个问题,我简单的还原一下场景,这是模拟一个简单的管理系统 ① 一张简单的客户表 CREATE TABLE customer( id INT(11) NOT NULL AUTO_INCREMENT UNIQUE, NAME VARCHAR(255) NOT NULL, gender VARCHAR(255) NOT NULL, phonenumber VARCHAR(255) NOT NULL, balance DECIMAL(10,1) UNSI

ACCP8.0 java课程第二学期-关于集合框架

本章重点 掌握ArrayList LinkedList HashMap与泛型集合 本章难点 泛型的理解 一 关于集合1)如果写程序时不知道运行时需要多少对象,或者需要更复杂的方式存储对象时,考虑使用集合它位于java.util包下2)集合框架包含接口,实现类,和相关算法3)Collection接口存储一组不唯一,无序的对象4)Set接口继承Collection接口,存储一组唯一无序的对象5)List接口继承Collection接口,存储一组不唯一有序的对象6)Map接口存储一组键值对的对象,ke

Java 中list==null与list.size( )==0的区别

1.list==null,意味着list压根没有地址,在堆内就不存在. 2.list.size( )= 0,意思是堆内有list,但是还没有放元素,其长度随着元素数量变化而变化,暂时为零. 3.list如果为null的话,说明没有进行初始化.这是list调用任何的方法都会抛出空异常.list.size( )==0说明list已经被new过,但      是里面没有值. 4.判断时一定要注意先后顺序,如果连杯子(list)都没有,直接判断是否有水(list.size( )),是会报NullPoin

JAVA集合框架

收藏 查看我的收藏 146有用+1 56 编辑 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态的Web.Internet计算.从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet.集合框架是为表示和操作集合而规定的一种统一的标准的体系结构.任何集合框架都包含三大块内容:对外的接口.接口的实

Java集合框架学习笔记

本文为学习笔记,学习课程为慕课网Java入门第三季中的集合框架部分,若需要研究文中的代码,可前往下载.http://www.imooc.com/learn/110 1. List(Collection子接口) 1.1 实例化 List list = new ArrayList(); ??List是一个接口,不可直接实例化,通常情况下ArrayList实现类进行实例化. 1.2 增 1.2.1 add(obj) ??直接将obj对象加入List末位. 1.2.2 add(i, obj) ??将ob