如何使用java8编写更好的代码

问题描述:

我将我的项目转换为java8。我如何使用java8以更好的方式编写此代码?如何使用java8编写更好的代码

List<Bar> bars = new ArrayList<>(); 
for (Foo foo : obj.getFooList()) { 
    bars.add(Helper.fooToBar(foo)); 
} 
return detailsVos; 
+0

无论是做一个'清单'了'名单'通过调用一个方法,或'名单'了'名单的',答案是一样的,你可以参考关联的问题。请注意,由于您正在清楚地了解Stream API,因此通过阅读[流教程](https://docs.oracle.com/javase/tutorial/collections/streams/),然后阅读任何答案。 – Tunaki

流使用方法的参考名单,测绘,然后收集到一个列表并返回它:

return obj.getFooList().stream().map(Helper::fooToBar).collect(Collectors.toList()); 

注意,“更好”被解释为“简洁”和“使用Java 8风格“。

另请注意,由于使用流的开销,这可能会执行略微比您的原始代码差

+1

我不认为它会变差。不是在一般情况下,或者不是以可测量的方式;如果它非常重要,那么就没有理由使用Stream开始。 – Tunaki

+4

大多数有经验的“使用流的开销”源于这样一个事实,即当Streams不在其他地方使用时,它们的初始开销会增加您的操作。如果他们的使用和Collection API一样多,那么从来没有任何明显的开销。像使用for-each循环时没有人注意到'Iterator'开销... – Holger