2015-10-04 19 views
6

に要素Tを挿入する方法はありますか?ストリームに要素を挿入する

ArrayList<Foo> foos = new ArrayList<>(); 
    Foo foo = new Foo(); 

    Stream<Foo> stream = Stream.concat(foos.stream(), Stream.of(foo)); 

別の方法がありますか?基本的にはfoo.stream().add(foo)の種類... - もちろんadd()は存在しません。 -

+3

:あなたはこのようArrayListの代わりにStream.BuilderStreamを構築することができますか? – RealSkeptic

+0

@RealSkepticまあ、もう少しです。 「回避策」のように見えますが、パフォーマンスについては、正直であるためにはさらに検索する必要があります。 –

答えて

7

いいえ、標準のJava Stream APIで指定されたストリームに要素を追加する方法は他にありません。内部的には同じconcatメソッドを使用しています

Stream<Foo> stream = StreamEx.of(foos).append(foo); 

:私のStreamExライブラリを含むいくつかのサードパーティのライブラリは、これを行うにはadditional便利なメソッドを提供します。

同様の方法がjOOLライブラリで提供されています:foosが存在しないと仮定すると

Stream<Foo> stream = Seq.seq(foos).concat(foo); 
1

。 `concat`方法についてのあなたを悩ませている何

Stream.Builder<Integer> builder = Stream.builder(); 
for (int i = 0; i < 10; i++) { 
    builder.accept(i); 
} 
Stream<Integer> build = builder.add(50).build(); 
// ... 
+0

これは非常に便利です。 –

関連する問題