- ベストアンサー
ラムダ式
ラムダ式のサンプルで以下の2行目と3行目のパターンがあります。 結果は同じなのですが両者に何かに違いはあるのでしょうか。 【ラムダ式のサンプル】 List<String> lists = Arrays.asList("hoge", "fuga", "bar"); lists.stream().forEach(str -> System.out.println(str)); lists.forEach(str -> System.out.println(str));
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
内容から本件の要点はラムダ式にはなくStreamインターフェースの方にあります。 結論は「この例では違いはない」です。3行目はListインターフェースのメソッドで2行目はStreamインターフェースのメソッドを使っているというだけの違いです。 Streamへ変換する本来の目的は任意のデータの列に対してプログラミングでよく出現するいろいろな操作パターンを簡便に記述することにあります。例えば lists.stream() .sorted((a, b) -> a.compareToIgnoreCase(b)) .limit(100) .forEach(s -> System.out.println(s)); などとすると「リストの各要素を大文字小文字を区別せずに並べ替え、その最初の100要素だけに制限し、その結果を表示する」といった具合です。よってStreamへ変換した直後に単にforEachすることには意味はなく、元のリストにあるforEachを使う方が適切です。
お礼
御回答ありがとうございます。 丁寧な解説ありがとうございました。