问题描述
我试图围绕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和收集到列表”之类的简单操作。
请记住,流不要代替循环。不要仅仅因为流是新的而使用流。