Java IntStream-konverteringer

1. Introduksjon

I denne raske opplæringen vil vi gå gjennom alle mulighetene angående IntStream konverteringer til andre typer.

Interessante lesninger om boksing og unboxing eller iterering anbefales som et supplement til denne veiledningen.

2. IntStream til Array

La oss begynne å utforske hvordan vi kan konvertere fra en IntStream motsette seg en rekke ints.

Av hensyn til dette eksemplet, la oss generere de første 50 partallene og lagre dem i en matrise som et resultat:

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

Først, la oss lage en uendelig strøm av heltall som starter ved 0 og gjentas ved å legge til 2 til hvert element. Umiddelbart etter det må vi legge til en mellomoperasjon grense for å gjøre denne operasjonen, på en eller annen måte, avsluttes.

Til slutt, la oss bruke avslutningsoperasjonen samle inn å samle dette Strøm til en matrise.

Dette er en rett frem måte å generere en rekke ints.

3. IntStream til Liste

La oss konvertere nå en IntStream til en Liste av Heltall.

I dette tilfellet, bare for å legge til mer variasjon i eksemplet, la oss bruke metoden område i stedet for metoden repetere. Denne metoden vil generere en IntStream fra int 0 til int 50 (ikke inkludert siden det er et åpent område):

@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 eksemplet bruker vi metoden område. Den mest beryktede delen her bruker metoden bokset, som, som navnet påpeker, vil bokse alle int elementer i IntStream og vil returnere a Strøm.

Til slutt kan vi bruke en samler for å få en liste over heltalls.

4. IntStream til String

For det siste emnet, la oss undersøke hvordan vi kan komme en String fra en IntStream.

I dette tilfellet genererer vi bare 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]"); }

Først, i dette tilfellet, konstruerer vi en IntStream med konstruktøren IntStream.of (). Etter å ha Strøm, må vi på en eller annen måte generere en Strøm fra en IntStream. Derfor, vi kan bruke mellomproduktet mapToObj metode som vil ta en IntStream og vil returnere a Strøm av typen av det resulterende objektet som er kartlagt i metoden som kalles.

Til slutt bruker vi samleren bli med det tar en Strøm og kan legge til hvert element i Strøm ved å bruke en skilletegn, og eventuelt et prefiks og suffiks.

5. Konklusjoner

I denne raske opplæringen har vi utforsket alle alternativene når vi trenger å konvertere en IntStream til alle andre typer. Spesielt gikk vi gjennom eksempler som genererte en matrise, a Liste, og en String.

Og som alltid er eksempelkoden tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found