我正在尝试将这段代码转换为Java 8流:
if(list!=null && list.size()>0){
Actor actor = null;
for(Actor actor:list){
log.info("Actor being read: " actor.getCode());
List areaList = areaDAO.getArea(actor.getCode());
if (areaList.size() > 0)
{
actor.setArea((String) areaList.get(0));
log.info("Area{" + areaList.get(0)
+ "} is fetched for actor{" + actor.getCode() + "}.");
}
this.getContext().setReadCount(1);
}
}
但是我不知道如何处理这种情况下的日志记录?这是一个好习惯吗?感谢您的帮助。感谢
答案 0 :(得分:21)
我们经常将登录信息放入代码中以支持调试。在这种情况下,我建议您查看peek方法。
这是一个提示:
8.2.1 (8C1002)
来自javadocs:
API注意: 此方法主要用于支持调试,您希望在元素流经管道中的某个点时查看元素:
答案 1 :(得分:3)
我认为在这种情况下使用forEach会对你有用吗?例如:
list.stream().forEach(actor -> {
log.info(String.format("Actor being read {%s}", actor));
String actorCode = actor.getCode();
areaDAO.getArea(actorCode).stream().findFirst().ifPresent(area -> {
actor.setArea(area);
log.info(String.format("Area {%s} is fetched for actor {%s}", area, actorCode));
});
getContext().setReadCount(1);
})
在某些情况下,你也可能想要投入Objects.isNull()
- 例如对于那个getCode部分 - 以及Optional.ofNullable
?