2
私はストリーム上にあるすべての整数を取得しようとしていますが、後で使用する整数の新しいストリームに本質的に追加されています。整数の新しいストリームを移入する複数のIntStreamに結合する
、私のような、IntStreamビルダーを使用して新しいものにそれらを追加し、複数のIntStreamsを作り、:
IntStream rightSide = IntStream.range(8, this.rows.getSlotAmount()).map(value -> value + 9);
IntStream leftSide = IntStream.range(0, this.rows.getSlotAmount()).map(value -> value % 9);
IntStream top = IntStream.range(0, 9);
IntStream bottom = IntStream.range(this.rows.getSlotAmount() - 9, this.rows.getSlotAmount());
IntStream.Builder slots = IntStream.builder();
rightSide.forEach(slots::add);
leftSide.forEach(slots::add);
top.forEach(slots::add);
bottom.forEach(slots::add);
slots.build().forEach(this::methodReference);
:
これにアプローチするより良い方法はあります
その後、一緒にそれらの2に参加あなたは#のCONCAT() 'をuse'IntStreamでしたが、それだけで2つのストリームを受け入れ... – Lino
が、すべての4つに参加する方が良いだろう、と2 IntStreamsを持っている(基本的に完全に3つのストリームを持ちます)結果の値を操作しますか? –
'IntStream.concat(IntStream.concat(rightSide、leftSide)、IntStream.concat(top、bottom))'を使うことができます。これは、より多くのストリームで拡張されないので、ストリームがもっと多い場合は、 'Stream.of(...).flatMapToInt(x - > x)'が良いでしょう。もう1つの方法は、1つのストリームを作成することを忘れることです。あなたの例では、各ストリームで 'forEach(slots :: add);を呼び出し、結果のストリームに対して' .forEach(this :: methodReference); 'を呼び出すだけです。最初に4つのストリームのそれぞれで '.forEach(this :: methodReference); 'を実行しないと... – Holger