Pretvorbe Java IntStream

1. Uvod

U ovom brzom uputstvu ćemo proći sve mogućnosti u vezi IntStream pretvorbe u druge vrste.

Zanimljiva čitanja o boksu i otpakiranju ili ponavljanju preporučuju se kao nadopuna ovog vodiča.

2. IntStream do Polje

Počnimo istraživati ​​kako možemo pretvoriti iz an IntStream objekt nizu od ints.

Radi ovog primjera, generirajmo prvih 50 parnih brojeva i kao rezultat ih spremimo u niz:

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

Prvo, stvorimo beskonačni tok cijelih brojeva koji počinju na 0 i ponavljajući se dodavanjem po 2 u svaki element. Odmah nakon toga, moramo dodati srednju operaciju ograničiti kako bi se ova operacija nekako završila.

Konačno, poslužimo se završnom operacijom prikupiti da sakupi ovo Stream na niz.

Ovo je izravan način generiranja niza ints.

3. IntStream do Popis

Pretvorimo se sada an IntStream do a Popis od Cijeli brojevi.

U ovom slučaju, samo da bismo primjeru dodali više raznolikosti, poslužimo se metodom domet umjesto metode ponavljati. Ova metoda će generirati IntStream od int 0 do int 50 (nije uključeno jer je otvoreni opseg):

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

U ovom primjeru koristimo metodu domet. Najozloglašeniji dio ovdje je korištenje metoda u kutiji, koji će, kako mu samo ime kaže, sadržavati sve int elementi u IntStream i vratit će a Stream.

Konačno, pomoću kolektora možemo dobiti popis cijeli brojs.

4. IntStream do Niz

Za našu posljednju temu, istražimo kako bismo mogli doći a Niz iz an IntStream.

U ovom ćemo slučaju generirati samo prva 3 ints (0, 1 i 2):

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

Prvo, u ovom slučaju, konstruiramo IntStream s konstruktorom IntStream.of (). Nakon što je Stream, moramo nekako generirati a Stream iz an IntStream. Dakle, mi mogu koristiti srednju mapToObj metoda to će potrajati IntStream i vratit će a Stream tipa rezultirajućeg objekta mapiranog u pozvanoj metodi.

Konačno, koristimo kolektor pridruživanje to traje a Stream i može dodati svaki element Stream upotrebom graničnika, a po želji i prefiksa i sufiksa.

5. Zaključci

U ovom smo brzom vodiču istražili sve alternative kada treba pretvoriti IntStream bilo kojoj drugoj vrsti. Konkretno, prošli smo kroz primjere generiranja niza, a Popisi a Niz.

Kao i uvijek, uzorak koda dostupan je na GitHubu.