2015-10-04 22 views
6

esiste un modo per inserire un elemento T in un Stream<T>?Inserisci elemento nel flusso

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

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

C'è un altro modo? fondamentalmente una specie di foo.stream().add(foo) ... - ovviamente add() non esiste. -

+3

Quello che dà fastidio sul metodo 'concat'? – RealSkeptic

+0

@RealSkeptic bene, è un po 'più lungo. Sembra una "soluzione alternativa", e sulle prestazioni, ma, ho bisogno di cercare di più per essere onesti. –

risposta

7

No, non c'è altro modo per aggiungere elementi allo stream specificato nell'API standard di Java Stream. Alcune librerie di terze parti, tra cui la mia libreria StreamEx forniscono additional convenienti metodi per farlo:

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

Internamente utilizza lo stesso metodo concat.

metodo simile è disponibile in jOOL libreria:

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

Supponendo che foos non esistono. È possibile costruire un Stream con la Stream.Builder invece di un ArrayList come questo:

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

Buono a sapersi, può essere molto utile. –

Problemi correlati