java-streamAan de slag met Java-stream


Opmerkingen

Deze sectie biedt een overzicht van wat Java-stream is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen in Java-stream vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor Java-stream nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Installatie of instellingen

Gedetailleerde instructies voor het instellen of installeren van java-stream.

Werken met Java Stream Api (Java 8) in Android met Android Studio

Gradle-instelling:

build.gradle (Module: app)

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

     jackOptions {
            enabled true
        }
 

Wat is de Stream API?

Stream is een nieuwe abstracte laag die is geïntroduceerd in Java 8. Een stream is een reeks elementen (objecten, primitieve typen) uit de streambron. Daarom is stream geen gegevensstructuur en worden de elementen waarmee het werkt niet opgeslagen. Het kan een eindige of oneindige grootte hebben en moeiteloos code-parallellisme toestaan

Advantage:

  • Het helpt bij het gebruik van gegevens op een declaratieve manier. We kunnen gebruik maken van databasefuncties zoals Max, Min etc., zonder een volledige iteratie uit te voeren.
  • Het maakt goed gebruik van multi-core architecturen zonder zich zorgen te maken over multi-threading code.
  • Met Java Stream kunnen we een pijplijn van gegevensbewerkingen maken die in een reeks of parallel kunnen worden uitgevoerd.
  • Het biedt ondersteuning voor bewerkingen per groep, bestelling per enz.
  • Het ondersteunt het schrijven voor code in functionele programmeerstijl.
  • Het biedt parallelle verwerking van gegevens.

Hoe streams werken:

Normale aanpak (zonder Stream Api te gebruiken):

 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
 

In bovenstaande code hebben we Integer List gemaakt en enkele gegevens toegevoegd en vervolgens Iterate gebruikt voor lus. Bij elke uitvoering van een lus controleren we het aantal lussen ( i >= 5 ) en num >=10 . sorteer ten slotte de stringlijst.

Laten we nu de code herschrijven met behulp van Java's 8 Stream API:

  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());