2016-11-28 35 views
0

我將我的項目轉換爲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

回答

2

流使用方法的參考名單,測繪,然後收集到一個列表並返回它:

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

注意,「更好」被解釋爲「簡潔」和「使用Java 8風格「。

另請注意,由於使用流的開銷,這可能會執行略微比您的原始代碼差

+1

我不認爲它會變差。不是在一般情況下,或者不是以可測量的方式;如果它非常重要,那麼就沒有理由使用Stream開始。 – Tunaki

+4

大多數有經驗的「使用流的開銷」源於這樣一個事實,即當Streams不在其他地方使用時,它們的初始開銷會增加您的操作。如果他們的使用和Collection API一樣多,那麼從來沒有任何明顯的開銷。像使用for-each循環時沒有人注意到'Iterator'開銷... – Holger