关于java:编程中易中招的bug总结

36次阅读

共计 505 个字符,预计需要花费 2 分钟才能阅读完成。

对于 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 中的元素,用迭代器!

正文完
 0