如何解决如何在Java 8流中过滤和记录空对象
我试图围绕java8流,想知道是否有人可以帮助我。
在旧的Java中,
List<Obj> newObjs = ArrayList<Obj>();
for (Obj obj : objects){
if(obj == null){
logger.error("null object");
}
else{
newObjs.add(...)
}
}
基本上,我想过滤空对象并将其记录下来。 在Java 8中执行此操作的好方法是什么?
解决方法
我建议将该逻辑移至其他方法
unchanged %>% filter(species == "CELgra") %>% ggplot( aes(x = range_point,y = ABV)) +
geom_boxplot() +
xlab(NULL)+
ylab("Total Aboveground Biomass (mg)") +
theme_bw()
然后只需流式传输列表
public boolean filter(Object obj) {
if(obj == null){
logger.error("null object");
return false;
}
return true;
}
,
您可以使用peek
并将if语句放入其中:
objects.stream().filter(this::filter).collect(Collectors.toList());
但是这种丢失了流的简洁性,所以我个人仍然会使用普通的for循环来实现诸如“过滤null和收集到列表”之类的简单操作。
请记住,流不要代替循环。不要仅仅因为流是新的而使用流。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。