Bli med og del arrays og samlinger i Java

1. Oversikt

I denne raske opplæringen lærer vi hvordan vi kan bli med og dele oss Arrays og Samlinger i Java, og utnytter den nye strømstøtten godt.

2. Bli med to Arrays

La oss begynne med å bli med to Arrays sammen ved hjelp av Stream.concat:

@Test offentlig ugyldig nårJoiningTwoArrays_thenJoined () {String [] animals1 = new String [] {"Dog", "Cat"}; String [] animals2 = new String [] {"Bird", "Cow"}; String [] result = Stream.concat (Arrays.stream (animals1), Arrays.stream (animals2)). ToArray (String [] :: new); assertArrayEquals (resultat, ny streng [] {"Dog", "Cat", "Bird", "Cow"}); }

3. Bli med to Samlinger

La oss gjøre det samme bli med to Samlinger:

@Test public void whenJoiningTwoCollections_thenJoined () {Collection collection1 = Arrays.asList ("Dog", "Cat"); Collection collection2 = Arrays.asList ("Bird", "Cow", "Moose"); Samlingsresultat = Stream.concat (collection1.stream (), collection2.stream ()) .collect (Collectors.toList ()); assertTrue (result.equals (Arrays.asList ("Dog", "Cat", "Bird", "Cow", "Moose")); }

4. Bli med to Samlinger Wmed Filter

La oss bli med to Samlinger av tall som filtrerer noe større enn 10:

@Test offentlig ugyldig nårJoiningTwoCollectionsWithFilter_thenJoined () {Collection collection1 = Arrays.asList ("Dog", "Cat"); Collection collection2 = Arrays.asList ("Bird", "Cow", "Moose"); Samlingsresultat = Stream.concat (collection1.stream (), collection2.stream ()) .filter (e -> e.length () == 3) .collect (Collectors.toList ()); assertTrue (result.equals (Arrays.asList ("Dog", "Cat", "Cow")); }

5. Bli med på en Array Inn i en String

Deretter, la oss bli med i en serie til en String bruker en Samler:

@Test offentlig ugyldig nårConvertArrayToString_thenConverted () {String [] animals = new String [] {"Dog", "Cat", "Bird", "Cow"}; String result = Arrays.stream (animals) .collect (Collectors.joining (",")); assertEquals (resultat, "Hund, katt, fugl, ku"); }

6. Bli med a Samling Inn i en String

La oss gjøre det samme, men med en Samling:

@Test offentlig ugyldig nårConvertCollectionToString_thenConverted () {Collection animals = Arrays.asList ("Dog", "Cat", "Bird", "Cow"); Strengresultat = animals.stream (). Collect (Collectors.joining (",")); assertEquals (resultat, "Hund, katt, fugl, ku"); }

7. Bli med a Kart Inn i en String

La oss deretter lage en String ut av en Kart.

Prosessen er veldig lik tidligere eksempler, men her har vi et ekstra trinn for først å bli med hver KartInngang:

@Test offentlig ugyldig nårConvertMapToString_thenConverted () {Map animals = new HashMap (); animals.put (1, "Dog"); animals.put (2, "Cat"); animals.put (3, "Cow"); Strengresultat = animals.entrySet (). Stream () .map (entry -> entry.getKey () + "=" + entry.getValue ()) .collect (Collectors.joining (",")); assertEquals (resultat, "1 = Dog, 2 = Cat, 3 = Cow"); }

8. Bli med Nested Samlinger Inn i en String

La oss gjøre noe mer komplisert. La oss bli med noen nestede Samlinger inn i en String.

I det følgende eksemplet blir vi først med i hver nestede samling, og deretter blir vi med i resultatet av hver av dem:

@Test offentlig ugyldig nårConvertNestedCollectionToString_thenConverted () {Collection nestet = ny ArrayList (); nestet.add (Arrays.asList ("Dog", "Cat")); nestet.add (Arrays.asList ("Cow", "Pig")); Strengresultat = nestet.stream (). Kart (nextList -> nextList.stream () .collect (Collectors.joining ("-"))) .collect (Collectors.joining (";")); assertEquals (resultat, "Dog-Cat; Cow-Pig"); }

9. Håndtak Null Verdier når du blir med

La oss se hvordan vi kan bruke en Filter å hoppe over noen null verdier:

@Test offentlig ugyldig nårConvertCollectionToStringAndSkipNull_thenConverted () {Collection animals = Arrays.asList ("Dog", "Cat", null, "Moose"); Strengresultat = animals.stream () .filter (Objects :: nonNull) .collect (Collectors.joining (",")); assertEquals (resultat, "Dog, Cat, Moose"); }

10. Del en Samling i to

La oss dele en Samling av tall i to Samlinger i midten:

@Test offentlig ugyldig nårSplitCollectionHalf_thenConverted () {Collection animals = Arrays.asList ("Dog", "Cat", "Cow", "Bird", "Moose", "Pig"); Samlingsresultat1 = ny ArrayList (); Samlingsresultat2 = ny ArrayList (); AtomicInteger count = new AtomicInteger (); int midtpunkt = Math.round (animals.size () / 2); animals.forEach (neste -> {int indeks = count.getAndIncrement (); hvis (indeks <midtpunkt) {resultat1.add (neste);} annet {result2.add (neste);}}); assertTrue (result1.equals (Arrays.asList ("Dog", "Cat", "Cow")); assertTrue (result2.equals (Arrays.asList ("Bird", "Moose", "Pig"))); }

11. Del en Array etter Word Length

Deretter la oss dele en matrise etter lengden på ordene:

@Test offentlig ugyldig nårSplitArrayByWordLength_thenConverted () {String [] animals = new String [] {"Dog", "Cat", "Bird", "Cow", "Pig", "Moose"}; Kart resultat = Arrays.stream (dyr) .collect (Collectors.groupingBy (String :: lengde)); assertTrue (result.get (3) .equals (Arrays.asList ("Dog", "Cat", "Cow", "Pig"))); assertTrue (result.get (4) .equals (Arrays.asList ("Bird"))); assertTrue (result.get (5) .equals (Arrays.asList ("Moose"))); }

12. Del en String Inn i en Array

La oss nå gjøre det motsatte, la oss dele en String inn i en Array:

@Test offentlig ugyldig nårConvertStringToArray_thenConverted () {Strengdyr = "Hund, katt, fugl, ku"; Streng [] resultat = animals.split (","); assertArrayEquals (resultat, ny streng [] {"Dog", "Cat", "Bird", "Cow"}); }

13. Split String Inn i en Samling

Dette eksemplet ligner på det forrige, det er bare et ekstra trinn å konvertere fra Array til en Samling:

@Test offentlig ugyldig nårConvertStringToCollection_thenConverted () {Strengdyr = "Hund, katt, fugl, ku"; Samlingsresultat = Arrays.asList (animals.split (",")); assertTrue (result.equals (Arrays.asList ("Dog", "Cat", "Bird", "Cow")); }

14. Del en String Inn i en Kart

La oss nå lage en Kart fra en String. Vi må dele strengen vår to ganger, en gang for hver oppføring, og en siste gang for nøkkelen og verdiene:

@Test offentlig ugyldig nårConvertStringToMap_thenConverted () {Strengdyr = "1 = Hund, 2 = Katt, 3 = Fugl"; Kartresultat = Arrays.stream (animals.split (",")). Kart (neste -> next.split ("=")) .collect (Collectors.toMap (oppføring -> Integer.parseInt (oppføring [0])) , oppføring -> oppføring [1])); assertEquals (result.get (1), "Dog"); assertEquals (result.get (2), "Cat"); assertEquals (result.get (3), "Bird"); }

15. Split String Wmed flere separatorer

Til slutt, la oss dele en String som har flere skilletegn ved å bruke et vanlig uttrykk, vil vi også fjerne eventuelle tomme resultater:

@Test offentlig ugyldig nårConvertCollectionToStringMultipleSeparators_thenConverted ().] ")) .Map (String :: trim). Filter (next ->! Next.isEmpty ()) .collect (Collectors.toList ()); assertTrue (result.equals (Arrays) .asList ("Dog", "Cat", "Bird", "Cow"))); 

16. Konklusjon

I denne opplæringen utnytter du det enkle String.split funksjon og den kraftige Java 8 Strøm, vi illustrerte hvordan man kan bli med og dele Arrays og Samlinger.

Du kan finne koden for denne artikkelen på GitHub.


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