1. ホーム
  2. java

Java 8 の Stream.peek() メソッドと Java 9 の比較

2023-12-18 20:15:24

質問

私はJava 8のラムダ式について学んでいる最中ですが、次のようなJavaコードの一部について質問したいと思います。 peek メソッドに関連する次のJavaコードの部分についてお聞きしたいです。

IDE上でプログラムを実行すると、何も出力されません。私はそれが与えるだろうと期待していた 2, 4, 6 .

import java.util.Arrays;
import java.util.List;

public class Test_Q3 {

    public Test_Q3() {
    }

    public static void main(String[] args) {
        List<Integer> values = Arrays.asList(1, 2, 3);
        values.stream()
              .map(n -> n * 2)
              .peek(System.out::print)
              .count();
    }
}

どのように解決するのですか?

Java9で実行されているのでしょうか?を変更していないでしょうか? SIZED プロパティを変更していないのですから、この場合 map または peek を全く含まない。

言い換えれば、あなたが気にしているのは count を最終結果とし、その間に List 任意の の方法(via filter を使うか、あるいは distinct ) これはStreamsで行われる最適化です。

ダミーのフィルタを追加しても、期待通りの結果が得られます。

values.stream ()
      .map(n -> n*2)
      .peek(System.out::print)
      .filter(x -> true)
      .count();