Java 8 StringJoiner

1. Introduksjon

StringJoiner er en ny klasse lagt til i Java 8 under java.util pakke.

For å si det enkelt, den kan brukes til å bli med Strenger bruker en avgrenser, prefiks og suffiks.

2. Legge til elementer

Vi kan legge til Strenger bruker legge til() metode:

@Test offentlig ugyldig nårAddingElements_thenJoinedElements () {StringJoiner joiner = new StringJoiner (",", PREFIX, SUFFIX); joiner.add ("Red") .add ("Green") .add ("Blue"); assertEquals (joiner.toString (), "[Rød, Grønn, Blå]"); }

Hvis vi vil bli med på alle elementene i en liste, må vi gå gjennom listen. Dessverre er det ingen enkel måte å gjøre det på StringJoiner:

@Test offentlig ugyldig nårAddingListElements_thenJoinedListElements () {List rgbList = new ArrayList (); rgbList.add ("Rød"); rgbList.add ("Grønn"); rgbList.add ("Blå"); StringJoiner rgbJoiner = ny StringJoiner (",", PREFIX, SUFFIX); for (Strengfarge: rgbList) {rgbJoiner.add (farge); } assertEquals (rgbJoiner.toString (), "[Rød, Grønn, Blå]"); }

3. Bygg

Å konstruere en forekomst av StringJoiner, vi trenger å nevne skillet. Eventuelt kan vi også spesifisere prefikset og suffikset som skal være tilstede i resultatet:

privat streng PREFIX = "["; privat streng SUFFIX = "]"; @Test offentlig ugyldig nårEmptyJoinerWithoutPrefixSuffix_thenEmptyString () {StringJoiner joiner = new StringJoiner (","); assertEquals (0, joiner.toString (). lengde ()); } @Test offentlig ugyldig nårEmptyJoinerJoinerWithPrefixSuffix_thenPrefixSuffix () {StringJoiner joiner = new StringJoiner (",", PREFIX, SUFFIX); assertEquals (joiner.toString (), PREFIX + SUFFIX); }

Vi bruker toString () for å få den nåværende verdien fra snekkeren.

Legg merke til standardverdiene som returneres av deltakerne. EN Snekker uten prefiks og suffiks returnerer et tomt String mens snekker med prefiks og suffiks returnerer a String inneholder både prefiks og suffiks.

Vi kan endre standard String returnert ved hjelp av setEmptyValue ():

@Test offentlig ugyldig nårEmptyJoinerWithEmptyValue_thenDefaultValue () {StringJoiner joiner = new StringJoiner (","); joiner.setEmptyValue ("standard"); assertEquals (joiner.toString (), "standard"); } @Test offentlig ugyldig nårEmptyJoinerWithPrefixSuffixAndEmptyValue_thenDefaultValue () {StringJoiner joiner = new StringJoiner (",", PREFIX, SUFFIX); joiner.setEmptyValue ("standard"); assertEquals (joiner.toString (), "standard"); }

Her returnerer begge snekkerne EMPTY_JOINER konstant.

Standardverdien returneres bare når StringJoiner er tom.

4. Slå sammen ledere

Vi kan slå sammen to snekkere ved hjelp av slå sammen(). Det legger til innholdet i det gitte StringJoineruten prefiks og suffiks som neste element:

@Test offentlig ugyldig nårMergingJoiners_thenReturnMerged () {StringJoiner rgbJoiner = new StringJoiner (",", PREFIX, SUFFIX); StringJoiner cmybJoiner = ny StringJoiner ("-", PREFIX, SUFFIX); rgbJoiner.add ("Red") .add ("Green") .add ("Blue"); cmybJoiner.add ("Cyan") .add ("Magenta") .add ("Yellow") .add ("Black"); rgbJoiner.merge (cmybJoiner); assertEquals (rgbJoiner.toString (), "[Rød, Grønn, Blå, Cyan-Magenta-Gul-Svart]"); }

Legg merke til hvordan “-“ brukes til å sammenkoble innhold av cmybJoiner samtidig som rgbJoiner fortsatt bruke “,”.

5. Strøm API

Det er stort sett alt vi kan gjøre med StringJoiner.

Det er en mer indirekte bruk som finnes i Strøm API:

@Test offentlig ugyldig nårUsedWithinCollectors_thenJoined () {List rgbList = Arrays.asList ("Red", "Green", "Blue"); String commaSeparatedRGB = rgbList.stream () .map (farge -> color.toString ()) .collect (Collectors.joining (",")); assertEquals (kommaSeparertRGB, "Rød, Grønn, Blå"); }

Collectors.joining () internt bruk StringJoiner å utføre sammenføyningsoperasjonen.

6. Konklusjon

I denne raske opplæringen illustrerte vi hvordan du bruker StringJoiner klasse. Samlet sett StringJoiner virker veldig primitiv og unnlater å ta opp noen grunnleggende brukstilfeller som å bli med på elementene i en liste. Det ser ut til å være primært designet for Samlere.

Hvis StringJoiner oppfyller ikke våre krav, det er andre populære og kraftige biblioteker, for eksempel Guava.

Og som vanlig kan alle kilder finnes på GitHub.


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