Java IntStream-conversies

1. Inleiding

In deze korte tutorial zullen we het doornemen alle mogelijkheden met betrekking tot IntStream conversies naar andere typen.

Interessante lezingen over boksen en unboxen of itereren worden aanbevolen als aanvulling op deze tutorial.

2. IntStream naar Array

Laten we beginnen te onderzoeken hoe we kunnen converteren van een IntStream bezwaar maken tegen een array van ints.

Laten we voor dit voorbeeld de eerste 50 even getallen genereren en ze als resultaat opslaan in een array:

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

Laten we eerst een oneindige stroom gehele getallen maken, beginnend bij 0 en itereren door 2 toe te voegen aan elk element. Meteen daarna moeten we een tussenbewerking toevoegen limiet om deze operatie op de een of andere manier te laten eindigen.

Laten we tot slot de terminating-bewerking gebruiken verzamelen om dit te verzamelen Stroom naar een array.

Dit is een eenvoudige manier om een ​​reeks ints.

3. IntStream naar Lijst

Laten we nu converteren een IntStream naar een Lijst van Gehele getallen.

Laten we in dit geval de methode gebruiken om meer variatie aan het voorbeeld toe te voegen bereik in plaats van de methode herhalen. Deze methode genereert een IntStream van de int 0 tot de int 50 (niet inbegrepen omdat het een open bereik is):

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

In dit voorbeeld maken we gebruik van de methode bereik. Het meest beruchte deel hier is gebruiken de methode Verpakt, die, zoals de naam aangeeft, alle int elementen in de IntStream en zal een Stroom.

Ten slotte kunnen we een verzamelaar gebruiken om een ​​lijst te krijgen van geheel getals.

4. IntStream naar Draad

Laten we voor ons laatste onderwerp eens kijken hoe we dit zouden kunnen krijgen een Draad van een IntStream.

In dit geval genereren we alleen de eerste 3 ints (0, 1 en 2):

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

Ten eerste construeren we in dit geval een IntStream met de constructor IntStream.of (). Na het hebben van de Stroom, we moeten op de een of andere manier genereer een Stroom van een IntStream. Vandaar dat wij kan het tussenproduct gebruiken mapToObj methode dat duurt een IntStream en zal een Stroom van het type van het resulterende object dat is toegewezen in de aangeroepen methode.

Ten slotte gebruiken we de verzamelaar toetreden dat duurt een Stroom en kan elk element van de Stroom door een scheidingsteken te gebruiken, en optioneel een voorvoegsel en achtervoegsel.

5. Conclusies

In deze korte tutorial hebben we alle alternatieven onderzocht wanneer we een IntStream naar elk ander type. We hebben in het bijzonder voorbeelden doorgenomen voor het genereren van een array, een Lijst, en een Draad.

En, zoals altijd, is de voorbeeldcode beschikbaar op GitHub.