English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base Java

Controllo del flusso di Java

Array di Java

Orientamento ad oggetti (I) di Java

Orientamento ad oggetti (II) di Java

Orientamento ad oggetti (III) di Java

Gestione delle eccezioni Java

Liste di Java

Queue (coda) di Java

Map collection di Java

Set collection di Java

Input/Output (I/O) di Java

Reader/Writer di Java

Altri argomenti di Java

L'API Stream migliorata di Java 9

Nuove funzionalità Java 9

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.

Il metodo takeWhile

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

Il metodo dropWhile

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

Il metodo iterate

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

Metodo ofNullable

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

Nuove funzionalità Java 9