Java Academy · Les

IntStream en LongStream

Boxing in streams vermijden

Les 1 van 413 stappen

IntStream en LongStream is een gratis Java Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 4 lessen.

Waarom primitieve streams bestaan

Stream<Integer> verpakt elk element in een Integer-object. IntStream, LongStream en DoubleStream werken met onbewerkte primitieve waarden om de overhead van boxing te vermijden.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int sum = IntStream.of(1, 2, 3, 4).sum();
        System.out.println(sum);
    }
}

Een IntStream maken

Gebruik IntStream.of voor expliciete waarden of Arrays.stream op een int[].

import java.util.Arrays;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int[] data = {10, 20, 30};
        IntStream s = Arrays.stream(data);
        System.out.println(s.max().getAsInt());
    }
}

LongStream voor grote getallen

LongStream werkt net als IntStream, maar met long-waarden, zodat overloop bij grote sommen wordt voorkomen.

import java.util.stream.LongStream;

public class Main {
    public static void main(String[] args) {
        long total = LongStream.of(1_000_000_000L, 2_000_000_000L).sum();
        System.out.println(total);
    }
}

Gespecialiseerde terminale bewerkingen

Primitieve streams voegen numerieke methoden toe die objectstreams niet hebben: sum, min, max en average.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream nums = IntStream.of(4, 8, 15, 16, 23, 42);
        System.out.println(nums.average().getAsDouble());
    }
}

Resultaten van het type OptionalInt

min en max geven OptionalInt terug omdat de stream leeg kan zijn. Gebruik getAsInt of orElse.

import java.util.OptionalInt;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        OptionalInt result = IntStream.empty().max();
        System.out.println(result.orElse(-1));
    }
}

map blijft primitief

map op een IntStream neemt een IntUnaryOperator aan en geeft een andere IntStream terug, dus er vindt geen boxing plaats.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int sumOfSquares = IntStream.of(1, 2, 3)
            .map(n -> n * n)
            .sum();
        System.out.println(sumOfSquares);
    }
}

filter op primitieve streams

filter neemt een IntPredicate aan en behoudt overeenkomende primitieve waarden.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        long evens = IntStream.of(1, 2, 3, 4, 5, 6)
            .filter(n -> n % 2 == 0)
            .count();
        System.out.println(evens);
    }
}

reduce op IntStream

reduce vouwt de stream samen met behulp van een IntBinaryOperator. Met een identiteitswaarde geeft het rechtstreeks een int terug.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int product = IntStream.rangeClosed(1, 5)
            .reduce(1, (a, b) -> a * b);
        System.out.println(product);
    }
}

forEach voor primitieven

forEach neemt een IntConsumer aan en vermijdt opnieuw boxing.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream.of(7, 8, 9).forEach(n -> System.out.println(n));
    }
}

Naar een array verzamelen

toArray geeft een primitieve int[] terug, de natuurlijke tegenhanger van een IntStream.

import java.util.Arrays;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int[] doubled = IntStream.of(1, 2, 3).map(n -> n * 2).toArray();
        System.out.println(Arrays.toString(doubled));
    }
}

Tussen Int en Long converteren

IntStream.asLongStream verbreedt primitieve waarden naar long zonder boxing.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        long sum = IntStream.of(1, 2, 3).asLongStream().sum();
        System.out.println(sum);
    }
}

Korte controle

Wat is de belangrijkste reden om IntStream te gebruiken in plaats van Stream<Integer>?

Samenvatting

Je gebruikte primitieve streams om boxing over te slaan:

  • IntStream en LongStream bevatten onbewerkte primitieve waarden.
  • Ze voegen numerieke terminale bewerkingen toe: sum, min, max en average.
  • min en max geven OptionalInt terug.
  • map, filter, reduce en toArray blijven allemaal primitief.
Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
104
Lessen
374

Veelgestelde vragen

Is de les “IntStream en LongStream” gratis?

Ja — de volledige tekst van “IntStream en LongStream” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 4 lessen.

Wat leer ik in “IntStream en LongStream”?

Boxing in streams vermijden Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Java Academy te beginnen?

Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “IntStream en LongStream”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Java Academy?

Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. IntStream en LongStream
  2. Bereik- en aggregatiebewerkingen
  3. Naar en van Object-streams mappen
  4. Primitieve streams genereren
← Terug naar Java Academy