Premiers pas avec java-stream

Installation ou configuration

Instructions détaillées sur la configuration ou l’installation de java-stream.

Travailler avec Java Stream Api (Java 8) dans Android à l’aide d’Android Studio

Configuration progressive :

build.gradle(Module : application)

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

     jackOptions {
            enabled true
        }

Qu’est-ce que l’API de flux ?

Stream est une nouvelle couche abstraite introduite dans Java 8. Un flux est une séquence d’éléments (objets, types primitifs) de la source du flux. Par conséquent, le flux n’est pas une structure de données et il ne stocke pas les éléments avec lesquels il fonctionne. Il peut être de taille finie ou infinie et permettre un parallélisme de code sans effort


Avantage :

  • Il aide à utiliser les données de manière déclarative. Nous pouvons nous servir La base de données fonctionne comme Max, Min, etc., sans exécuter une analyse complète itération.
  • Il fait bon usage des architectures multicœurs sans se soucier code multi-threading.
  • Nous pouvons créer un pipeline d’opérations de données avec Java Stream qui peut exécutés en séquence ou en parallèle.
  • Il fournit un support pour les opérations group by, order by etc.
  • Il prend en charge l’écriture de code dans le style de programmation fonctionnelle.
  • Il permet un traitement parallèle des données.

Comment fonctionnent les flux :

Approche normale (sans utiliser Stream Api) :

 List<Integer> numbers = new ArrayList<>();
    numbers.addAll(Arrays.asList(1, 20, 3, 10, 20, 30, 4, 50, 80, 1, 2));//adding dummy data

    int i = 0;
    List<String> number_str = new ArrayList<>();
    for (Integer num : numbers) {
        if (i >= 5)//after 5 loop will stop
            break;

        if (num >= 10) // check number greater than or equal to 10
        {
            number_str.add(String.format("Number %d", num));//Typecast Integer to String then add to String List
            i++;//increment i count
        }
    }

    number_str.sort(Comparator.naturalOrder());//sort the list

Dans le code ci-dessus, nous avons créé une liste d’entiers et ajouté des données, puis itérer en utilisant la boucle for. À chaque exécution de boucle, nous vérifions le nombre de boucles (i >= 5) et num >=10. enfin trier la liste de chaînes.


Maintenant, réécrivons le code à l’aide de l’API 8 Stream de Java :

  List<Integer> numbers = new ArrayList<>();
numbers.addAll(Arrays.asList(1, 20, 3, 10, 20, 30, 4, 50, 80, 1, 2));

List<String> number_str = numbers.stream()
        .filter(num -> num >= 10)//check num greater than 10
        .limit(5)//stop loop at 5
        .sorted()//sort the list
        .map(num -> String.format("Number %d", num))//typecast into String List
        .collect(Collectors.toList());