2016-11-28 22 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

関連する問題