English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
L'API Stream migliorata di Java 9 ha aggiunto alcuni metodi utili che rendono più facile la gestione dei flussi e la scrittura di query complesse utilizzando collector.
Java 9 ha aggiunto alcuni metodi nuovi a Stream: dropWhile, takeWhile, ofNullable, e ha aggiunto un metodo sovraccaricato a iterate.
Sintassi
default Stream<T> takeWhile(Predicate<? super T> predicate)
Il metodo takeWhile() utilizza un assert come parametro e restituisce la sottoserie del flusso dati fino a quando l'assert non restituisce false per la prima volta. Se il primo valore non soddisfa l'assert, viene restituito un flusso dati vuoto.
Il metodo takeWhile() restituisce il maggior numero di elementi possibili dall'inizio del flusso dati in un flusso ordinato; in un flusso disordinato, takeWhile() restituisce una sottoserie degli elementi che soddisfano l'assert. Se il primo valore non soddisfa l'assert, viene restituito un flusso dati vuoto.
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty()) .forEach(System.out::print); } }
L'esempio di metodo takeWhile di seguito ferma l'output ciclico quando incontra una stringa vuota, il risultato dell'esecuzione è:
abc
Sintassi
default Stream<T> dropWhile(Predicate<? super T> predicate)
Il metodo dropWhile funziona opposto al takeWhile, utilizza un assert come parametro e restituisce la sottoserie del flusso dati fino a quando l'assert non restituisce false per la prima volta.
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").dropWhile(s->!s.isEmpty()) .forEach(System.out::print); } }
L'esempio di metodo dropWhile di seguito inizia a eseguire l'output ciclico quando incontra una stringa vuota, il risultato dell'esecuzione è:
ef
Sintassi
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
Il metodo consente di creare un flusso ordinato (potrebbe essere infinito) utilizzando un valore iniziale di seme e applicando iterativamente il metodo specificato. L'iterazione si ferma quando il predicate specificato per hasNext restituisce false.
java.util.stream.IntStream; public class Tester { public static void main(String[] args) { IntStream.iterate(3, x -> x < 10, x -> x + 3).forEach(System.out::println); } }
L'esecuzione dei risultati di output è:
3 6 9
Sintassi
static <T> Stream<T> ofNullable(T t)
Il metodo ofNullable può prevenire l'eccezione NullPointerExceptions, evitando valori null attraverso la verifica del flusso.
Se l'elemento specificato non è null, viene restituito un singolo elemento e generato un flusso di elementi singoli, se l'elemento è null viene restituito un flusso vuoto.
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { long count = Stream.ofNullable(100).count(); System.out.println(count); count = Stream.ofNullable(null).count(); System.out.println(count); } }
L'esecuzione dei risultati di output è:
1 0