关于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。使用它们时,一定要判空。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。