Java IntStream-konverteringer

1. Introduktion

I denne hurtige vejledning gennemgår vi alle muligheder vedrørende IntStream konverteringer til andre typer.

Interessante aflæsninger om boksning og unboxing eller iterering anbefales som et supplement til denne vejledning.

2. IntStream til Array

Lad os begynde at undersøge, hvordan vi kan konvertere fra en IntStream modsætter sig en række ints.

Af hensyn til dette eksempel, lad os generere de første 50 lige numre og gemme dem i en matrix som et resultat:

@Test offentlig ugyldig intStreamToArray () {int [] first50EvenNumbers = IntStream.iterate (0, i -> i + 2) .limit (50) .toArray (); assertThat (first50EvenNumbers) .hasSize (50); assertThat (first50EvenNumbers [2]). er EqualTo (4); }

Lad os først oprette en uendelig strøm af heltal, der starter ved 0 og gentager ved at tilføje 2 til hvert element. Umiddelbart derefter skal vi tilføje en mellemliggende operation begrænse for at udføre denne operation på en eller anden måde afsluttes.

Lad os endelig bruge den afsluttende operation indsamle at samle dette Strøm til en matrix.

Dette er en ligefrem måde at generere en række ints.

3. IntStream til Liste

Lad os konvertere nu en IntStream til en Liste af Heltal.

I dette tilfælde skal vi bare bruge metoden for at tilføje mere variation til eksemplet rækkevidde i stedet for metoden gentage. Denne metode genererer en IntStream fra int 0 til int 50 (ikke inkluderet, da det er et åbent interval):

@Test public void intStreamToList () {List first50IntegerNumbers = IntStream.range (0, 50) .boxed () .collect (Collectors.toList ()); assertThat (first50IntegerNumbers) .hasSize (50); assertThat (first50IntegerNumbers.get (2)). er EqualTo (2); }

I dette eksempel bruger vi metoden rækkevidde. Den mest berygtede del her bruger metoden kasse, som, som navnet påpeger, vil markere alle int elementer i IntStream og returnerer en Strøm.

Endelig kan vi bruge en samler til at få en liste over heltals.

4. IntStream til Snor

Lad os undersøge, hvordan vi kunne få det sidste emne -en Snor fra en IntStream.

I dette tilfælde genererer vi kun de første 3 ints (0, 1 og 2):

@Test offentlig ugyldig intStreamToString () {String first3numbers = IntStream.of (0, 1, 2) .mapToObj (String :: valueOf) .collect (Collectors.joining (",", "[", "]")); assertThat (first3numbers) .isEqualTo ("[0, 1, 2]"); }

For det første konstruerer vi i dette tilfælde en IntStream med konstruktøren IntStream.of (). Efter at have Strøm, skal vi på en eller anden måde generere en Strøm fra en IntStream. Derfor vi kan bruge mellemproduktet mapToObj metode der vil tage en IntStream og returnerer en Strøm af typen af ​​det resulterende objekt, der er kortlagt i den kaldte metode.

Endelig bruger vi samleren tilslutning det tager en Strøm og kan tilføje hvert element i Strøm ved hjælp af en afgrænser og eventuelt et præfiks og suffiks.

5. Konklusioner

I denne hurtige vejledning har vi undersøgt alle alternativer, når vi har brug for at konvertere en IntStream til enhver anden type. Især gennemgik vi eksempler som generering af en matrix, a Listeog en Snor.

Og som altid er prøvekoden tilgængelig på GitHub.