编程中易中招的bug总结

Posted SanPiBrother

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程中易中招的bug总结相关的知识,希望对你有一定的参考价值。

关于Stream流的错误使用

前段时间碰到类似这样的代码,短短三行代码,可能会排抛两个异常。(o_o)

  list.stream().map(str -> transNewStr(str))
          .findFirst()
          .get();

transNewStr(str)返回null,执行findFirst会报空指针,如果findFirst返回空,get()会报NoSuchElementException。
正确写法如下:

   list.stream().map(str -> transNewStr(str))
              .filter(Objects::nonNull)
              .findFirst()
              .orElse(null);

关于ArrayList

如果你想当然的去覆盖ArrayList中的值,估计会写出下面这种蠢代码,这是无法对值进行覆盖的,执行完后,ArrayList中会有两个元素。原因看下源码就知道了,插入时,旧元素会后移。

        ArrayList<String> list = new ArrayList<>();
        list.add(0,"a");
        list.add(0,"b");

ps:不要用foreach来remove ArrayList中的元素,用迭代器!

关于ConcurrentHashMap

ConcurrentHashMap是中,key与value都不能为null,否则会报空指针,这点和HashMap不一样,除此外,还有并发容器不让存储null,比如HashTable。使用它们时,一定要判空。

以上是关于编程中易中招的bug总结的主要内容,如果未能解决你的问题,请参考以下文章

编程中易犯错误汇总:一个综合案例.md

关于程序员们的一些有趣的事实,你中招了吗?

JavaScript中易犯的小错误-------常见错误二:传统编程语言的生命周期误区

程序员面试常犯的五大错误,你中招了吗

十个JavaScript中易犯的小错误,你中了几枪?

中招了!3.06 亿泄密密码公开查询;AI帮程序员改Bug准确率近80%;TensorFlow 1.3.0-rc2 发布