Javaがストリーム操作をストリームパイプラインに構成する方法を理解するのに苦労しているようです。
次のコードを実行すると
public
static void main(String[] args) {
StringBuilder sb = new StringBuilder();
var count = Stream.of(new String[]{"1", "2", "3", "4"})
.map(sb::append)
.count();
System.out.println(count);
System.out.println(sb.toString());
}
コンソールはのみを印刷し4
ます。StringBuilder
オブジェクトは、まだ価値があります""
。
フィルター操作を追加すると: filter(s -> true)
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
var count = Stream.of(new String[]{"1", "2", "3", "4"})
.filter(s -> true)
.map(sb::append)
.count();
System.out.println(count);
System.out.println(sb.toString());
}
出力は次のように変わります。
4
1234
この一見冗長なフィルター操作は、合成ストリームパイプラインの動作をどのように変更しますか?