阿里Java开发手册阅读笔记5


1. 在使用java.util.stream.Collectors类的toMap()方法转为Map集合时,一定要注意当value为null时会抛出NPE异常

这个问题之前从来没有遇到过,因为以前根本不写lambda语句,还是在那个外卖平台的项目中,我学习到了对象转流再返回collect转list,极大的方便了当前端只需要实体对象的部分属性(即VO是DO的子集关系)的时候,就不用去写复杂的循环体。

2. 不要再foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁

这个问题也没遇到过,foreach倒是经常用,在我了解到上面的lambda之前,我一直使用foreach遍历集合对象修改一些东西,但是业务也只限于修改,所以遇不到这个问题,但是也很难保证以后在复杂的场景中不会遇到问题,先记录下来。

3. SimpleDateFormat是线程不安全的类,一般不要定义static变量,如果定义为static必须加锁,或者使用DateUtils工具类

在真实的业务场景中会要写很多的工具类,我自己也写过一个简单的DateUtils,很遗憾其中用到的格式对象就是SimpleDateFormat,如果不是手册中提到可能我将来很长一段时间都不知道这个问题。