资讯专栏INFORMATION COLUMN

Java小细节:List可以add(null)吗?

kumfo / 1375人阅读

摘要:我需要这个判断吗遍历的时候,是否需要对每个元素判空换句话说,是否可以允许。然后我实验了一下,发现竟然是可以的。

在写代码的时候,有时候遇到for循环,写到下面的时候有一点犹豫。

List dataList = ...;
for (Data d : dataList) {
    if (d != null) { // 我需要这个判断吗?
        // ...
    }
}

遍历的时候,是否需要对每个元素判空?换句话说,List是否可以允许add null。
然后我实验了一下,发现竟然是可以的。(我之前的理解是不可以,add null可能会没有发生任何事情)

static class Data {
    String mName;
    public Data(String s) {
        this.mName = s;
    }

    @Override
    public String toString() {
        return "Data:" + mName;
    }
}

public static void main(String[] args) {
    List dataList = new ArrayList<>();
    dataList.add(null);
    dataList.add(new Data("shit"));
    System.out.println(dataList.size()); // 这里输出的是2

    for (Data d : dataList) {
        System.out.println(d.mName); // 这里会空指针异常
    }
}

好了,这样心中的疑惑就消除了,在遍历的时候,对每个元素判空是非常必要的。

参考资料
关于为什么ArrayList允许添加null https://softwareengineering.s...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71697.html

相关文章

  • 实用 | 35个可以提高千倍效率的Java代码技巧

    摘要:此举能够使性能平均提高。尽可能使用局部变量调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量实例变量等,都在堆中创建,速度较慢。 showImg(https://segmentfault.com/img/bVbsIIl?w=900&h=383);本文来源 | http://atjf.top/3WLPmG 作者 | 萌小Q 01前沿 代码优化 ,一个...

    NikoManiac 评论0 收藏0
  • Java基础知识整理

    摘要:有两个重要的子类异常和错误,二者都是异常处理的重要子类,各自都包含大量子类。错误是程序无法处理的错误,表示运行应用程序中较严重问题。异常由虚拟机抛出。迭代器通常被称为轻量级对象,因为创建它的代价小。 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是...

    hankkin 评论0 收藏0
  • Java 迭代器引发 ConcurrentModificationException

    摘要:迭代器智能吗第一步,将列表中的根节点找出来。源码翻开中迭代器的源码。在迭代器对象执行操作之前,都会执行方法,以判断当前操作下是否安全。 引言 ConcurrentModificationException这个异常大家都很熟悉,当在forEach进行删除时都会出现该异常。 如果你还不了解,请参考澍澍的博客:关于在list循环的过程中进行删除的处理 - 晨澍的博客 showImg(http...

    用户83 评论0 收藏0
  • Java 迭代器引发 ConcurrentModificationException

    摘要:迭代器智能吗第一步,将列表中的根节点找出来。源码翻开中迭代器的源码。在迭代器对象执行操作之前,都会执行方法,以判断当前操作下是否安全。 引言 ConcurrentModificationException这个异常大家都很熟悉,当在forEach进行删除时都会出现该异常。 如果你还不了解,请参考澍澍的博客:关于在list循环的过程中进行删除的处理 - 晨澍的博客 showImg(http...

    kumfo 评论0 收藏0
  • Java8(3):Java8 中 Map 接口的新方法

    摘要:我们提一个需求给定一个,统计每个元素出现的所有位置。而且因为方法会返回新的此时便是与相关联的所以我们可以直接调用其方法。在本文类似需求的情况下,就适用性和简洁性而言,要优于。 我们提一个需求:给定一个 List,统计每个元素出现的所有位置。 比如,给定 list:[a, b, b, c, c, c, d, d, d, f, f, g] ,那么应该返回:a : [0]b : [1, 2]...

    Youngs 评论0 收藏0

发表评论

0条评论

kumfo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<