Convertir une liste en map en Java

Rupam Yadav 12 octobre 2023
  1. findFirst() Méthode de Stream en Java 8
  2. findAny() Méthode de Stream dans Java 8
Convertir une liste en map en Java

L’API java.util.stream a été introduite dans Java 8 ; il est utilisé pour traiter une collection d’objets. Différentes sources telles que des tableaux ou des collections peuvent créer un Stream.

Ici, nous examinerons de près les méthodes Stream findFirst() et findAny() et quand les utiliser.

findFirst() Méthode de Stream en Java 8

Stream ne modifie pas les données d’origine ; il évalue les éléments du Stream à l’aide des méthodes de pipeline.

La méthode API Stream findFirst() est une opération de terminal ; il se termine et renvoie un résultat. Nous utilisons la méthode findfFirst() lorsque nous avons besoin du premier élément de la séquence.

Cette méthode renvoie un Optional<T>, qui décrit le premier élément du Stream. Ici T est le type qui est String.

Facultatif est un objet conteneur ; il peut contenir ou non une valeur non nulle. Si le Stream est vide, le Optional renvoyé sera vide.

Nous créons une liste de fruits et de names contenant respectivement des données de type String et Integer, en utilisant la méthode findFirst() dans un contexte différent. Nous appelons le .stream() sur la liste qui renvoie un Stream d’éléments de liste.

Nous avons besoin du premier élément de cette liste, nous appelons donc la méthode findFirst() dessus. Il renvoie un Optional, que nous stockons dans first.

On vérifie si l’instance Optional contient une valeur ou non à l’aide de la méthode isPresent() qui renvoie un booléen. S’il retourne true, nous avons une valeur, et nous l’obtenons en utilisant first.get() et l’affichons. Si l’instance Optional est vide, nous n’imprimons aucune valeur.

La seconde instruction numbers.stream().filter((x)->x>5).findFirst() donne une seconde instance Optional firstN. Nous appliquons d’abord la méthode filter() pour retourner un Stream filtré basé sur un prédicat donné.

Cette méthode retourne un nouveau Stream d’éléments avec une valeur supérieure à 5. À partir de ce Stream, nous devons obtenir le premier élément. Dans notre cas, le premier élément avec une valeur supérieure à 5 dans le Stream de numbers n’est que 8.

import java.util.List;
import java.util.Optional;

public class StreamTest {
  public static void main(String[] args) {
    List<String> fruits = List.of("Apple", "Grapes", "Orange", "Kiwi");
    List<Integer> numbers = List.of(4, 5, 3, 8);

    Optional<String> first = fruits.stream().findFirst();
    if (first.isPresent()) {
      String string = first.get();
      System.out.println("First String is : " + string);
    } else {
      System.out.println("No value");
    }
    Optional<Integer> firstN = numbers.stream().filter((x) -> x > 5).findFirst();
    if (firstN.isPresent()) {
      System.out.println("First Number is : " + firstN.get());
    } else {
      System.out.println("No value");
    }
  }
}

Production :

First String is : Apple
First Number is : 8

findAny() Méthode de Stream dans Java 8

La méthode findAny() retourne une instance Optional décrivant n’importe quel élément du Stream. Nous avons une liste d’éléments de type Integer dans le programme ci-dessous.

Nous créons un Stream à partir de la liste et filtrons ce Stream pour renvoyer les nombres qui ont une valeur inférieure à 5. Ensuite, nous appelons findAny() pour obtenir n’importe quel nombre de ce Stream filtré.

Dans la plupart des cas, il renverra le premier élément. Si l’instance Optional firstN n’est pas vide, nous imprimons la valeur de l’instance que nous obtenons à l’aide de la méthode get().

import java.util.List;
import java.util.Optional;

public class StreamTest {
  public static void main(String[] args) {
    List<Integer> numbers = List.of(4, 5, 2, 8);
    Optional<Integer> firstN = numbers.stream().filter((x) -> x < 5).findAny();
    if (firstN.isPresent()) {
      System.out.println("Any First Number less then 5 is : " + firstN.get());
    } else {
      System.out.println("No value");
    }
  }
}

Production :

Any First Number less then 5 is : 4

Notez que dans le cas de Stream séquentiels et parallèles, le comportement des méthodes findAny() et findFirst() ne changera pas. Le comportement de findAny() dans le cas de Stream non parallèles n’est pas garanti.

Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Article connexe - Java Stream