Articles of java stream

In Java, come faccio a scorrere in modo efficiente ed elegante i discendenti di un nodo dell’albero?

Supponiamo di disporre di una raccolta di oggetti identificati da String s univoci, insieme a una struttura ad Tree class che definisce una gerarchia su di essi. Quella class viene implementata utilizzando una Map dai nodes (rappresentati dai rispettivi ID) alla Collection s dei rispettivi ID figli. class Tree { private Map<String, Collection> edges; // […]

Java 8 stream in ordine inverso

Domanda generale: qual è il modo corretto per invertire un stream? Supponendo che non sappiamo quale tipo di elementi è costituito da tale stream, qual è il modo generico per invertire qualsiasi stream? Domanda specifica: IntStream fornisce il metodo range per generare IntStream.range(-range, 0) interi nell’intervallo specifico IntStream.range(-range, 0) , ora che voglio invertirlo, l’intervallo […]

Qual è la differenza tra Collection.stream (). ForEach () e Collection.forEach ()?

Capisco che con .stream() , posso usare le operazioni a catena come .filter() o usare il stream parallelo. Ma che differenza c’è tra loro se ho bisogno di eseguire piccole operazioni (ad esempio, stampando gli elementi della lista)? collection.stream().forEach(System.out::println); collection.forEach(System.out::println);

Perché questo stream java funziona su due volte?

L’ API Java 8 dice: L’attraversamento della sorgente della pipeline non inizia finché non viene eseguita l’operazione terminale della pipeline. Quindi, perché il seguente codice genera: java.lang.IllegalStateException: lo stream è già stato utilizzato o chiuso Stream stream = Stream.of(1,2,3); stream.filter( x-> x>1 ); stream.filter( x-> x>2 ).forEach(System.out::print); La prima operazione di filtro secondo l’API non […]

Java 8 Stream: filtri multipli e condizioni complesse

A volte si desidera filtrare un Stream con più di una condizione: myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) … oppure potresti fare lo stesso con una condizione complessa e un filter singolo : myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) … La mia ipotesi è che il secondo approccio abbia caratteristiche di […]

Java 8 stream’s .min () e .max (): perché viene compilato?

Nota: questa domanda proviene da un collegamento morto che era una precedente domanda SO, ma qui va … Vedi questo codice ( nota: so che questo codice non “funzionerà” e che l’ Integer::compare dovrebbe essere usato – l’ho appena estratto dalla domanda collegata ): final ArrayList list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); System.out.println(list.stream().max(Integer::max).get()); System.out.println(list.stream().min(Integer::min).get()); Secondo javadoc di […]

Perché Stream non implementa Iterable ?

In Java 8 abbiamo la class Stream , che ha curiosamente un metodo Iterator iterator() Quindi ti aspetteresti che implementasse l’interfaccia Iterable , che richiede esattamente questo metodo, ma non è questo il caso. Quando voglio scorrere su un stream utilizzando un ciclo foreach, devo fare qualcosa di simile public static Iterable getIterable(Stream s) { […]

Trova il primo elemento per predicato

Ho appena iniziato a giocare con Java 8 lambda e sto cercando di implementare alcune delle cose a cui sono abituato nei linguaggi funzionali. Ad esempio, la maggior parte dei linguaggi funzionali ha una sorta di funzione di ricerca che opera su sequenze, o liste che restituiscono il primo elemento, per il quale il predicato […]

Conta frequenza di parola Java 8

Come contare la frequenza delle parole di List in Java 8? List wordsList = Lists.newArrayList(“hello”, “bye”, “ciao”, “bye”, “ciao”); Il risultato deve essere: {ciao=2, hello=1, bye=2}

Come convertire un stream Java 8 in una matrice?

Qual è il modo più semplice / più breve per convertire un Stream Java 8 in un array?