JAVA STREAM API: 5 USI PIU' COMUNI

A partire da Java 8, tutte le classi che implementano l'interfaccia Collection possono costituire la sorgente di uno stream. Esso è una sorta di Iterator infinito, lazy ed attraversabile un'unica volta dove sui suoi elementi è possibile effettuare operazioni terminali o intermedie. Le prime generano un risultato di un determinato tipo mentre le seconde un nuovo stream su cui è possibile invocare nuove operazioni in un processo a catena.

L'utilizzo delle stream API in combinazione con le lambda costituisce un modo super efficace di lavorare con le collezioni.

Diamo quindi un'occhiata agli utilizzi più comuni di queste API.

  1. FILTER: utilizzato per rimuovere valori all'interno di una collection sulla base di una determinata condizione.
    List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7);
    List<Integer> oddNUmbers = numbers.stream().filter(el -> el % 2 == 0).collect(toList());
  2. REDUCE: utilizzato per applicare una funzione ad ogni elemento della collection ritornando però un unico valore.
    List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7);
    int sum = numbers.stream().reduce(0, (a,b) -> a + b);
  3. GROUPING: raggruppa gli elementi della collection sulla base di una determinata condizione.
    class BlogPost {
     String title;
     String author;
     String type;
    }
    		
    BlogPost post1 = new BlogPost();
    post1.author = "Test";
    post1.title = "Title test";
    post1.type = "NEWS";
    
    BlogPost post2 = new BlogPost();
    post2.author = "Test 2";
    post2.title = "Title test 2";
    post2.type = "GUIDE";
    		
    BlogPost post3 = new BlogPost();
    post3.author = "Test 3";
    post3.title = "Title test 3";
    post3.type = "GUIDE";
    		
    List<BlogPost> posts = Arrays.asList(post1, post2, post3);
    Map<String, List<BlogPost>> map = posts.stream().collect(Collectors.groupingBy(el -> el.type));
    
  4. FINDING: trova il primo o qualsiasi elemento della collection che "fa scopa" con il criterio specificato.
    List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7);
    Optional<Integer> firstOdd = numbers.stream().filter(el -> el % 2 == 0).findFirst();
  5. SORTING: come si evince dal nome, ordina gli elementi di una collection. E' possibile utilizzare il metodo sorted in accoppiata con un Comparator per regole di ordinamento più complesse.
    List<Integer> numbers = Arrays.asList(10,2,11,4,1,6,3);
    List<Integer> sortedList = numbers.stream().sorted().toList();

Comments

Popular posts from this blog

AGGIORNAMENTO INVESTIMENTI 2° TRIMESTRE 2024

AGGIORNAMENTO INVESTIMENTI 1° TRIMESTRE 2024

HO COMPRATO UNO XIOAMI 14 ULTRA