Quelques améliorations ont été apportées pour compléter des manquements de java 8 dans le cadre d'utilisation des collections...

plus de 4 an(s)

Description

Les Streams avec JAVA 9

Quelques améliorations ont été apportées pour compléter des manquements de java 8  dans le cadre d'utilisation des collections...  

Fonction takeWhile :   

Permet de parcourir une collection en utilisant un prédicat, contrairement à limit takeWhile fonctionne comme une porte d'entrée ouvert qui va se fermer dès la condition est validée... après la porte est définitivement fermée.  

        List<Integer> numbers = Arrays.asList(1, 3, 8, 45, 89, 67, 83, 99, 100);

		//
		System.out.println("---> limit");
		numbers.stream().limit(3).forEach(System.out::println);

	    numbers.streams.takeWhile(e -> e < 45).forEach(System.out::println);	

 

Fonction dropWhile :  

Permet de parcourir une collection en utilisant un prédicat, contrairement à skip dropWhile fonctionne comme une porte d’entrée fermé qui va s'ouvrir dès que la condition est validée... après la porte reste définitivement ouverte.  

        List<Integer> numbers = Arrays.asList(1, 3, 8, 45, 89, 67, 83, 99, 100);

		//
		System.out.println("---> Skip");
		numbers.stream().skip(3).forEach(System.out::println);

        numbers.stream().dropWhile(e -> e > 45).forEach(System.out::println);

 

Iterate  

Permet d'itérer sur une collection, en précisant la valeur de départ, un prédicat,  et un fonction  d'incrémentation    

iterate(seed; predicate; function)  

// equivalent
for(int i 0; i < 10 ; i = i +2) 
   System.out.println(i); 
 

 

Avec java 8, il n'y avait pas de prédicat pour arrêter la boucle.  

Stream.iterate(1, count->count+2 ).forEach(System.out::println); // boucle infini 

 

OfNullable()  

Permet de renvoyer une interface Optionnals lorsque la value est null... cette méthode permet d'éviter les Nullpointer et éviter d'avoir à vérifier les null dans le code.  

Stream.ofNullable(10).count();  // renvoie 1
Stream.ofNullable(null).count(); // renvoie une un Stream vide.  

 

// Avec java 8   

User user = getUserById(id);  
Stream<Address> address= user== null? Stream.empty(): user.addresses();  


// Avec Java 9  

User user= getUserById(id);  
Stream.ofNullable(user).flatMap(User::addresses)  //=>  renvoie une collection vide et evite les NullPointer