Java 8 StringJoiner

1. Introduktion

StringJoiner er en ny klasse tilføjet i Java 8 under java.util pakke.

Kort fortalt, det kan bruges til sammenføjning Strenge ved hjælp af en afgrænser, et præfiks og et suffiks.

2. Tilføjelse af elementer

Vi kan tilføje Strenge bruger tilføje() 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øn, Blå]"); }

Hvis vi vil sammenføje alle elementerne på en liste, bliver vi nødt til at løbe gennem listen. Desværre er der ingen nem måde at gøre det på StringJoiner:

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

3. Konstruktion

At konstruere en instans af StringJoiner, vi skal nævne afgrænseren. Eventuelt kan vi også specificere det præfiks og suffiks, der skal være til stede i resultatet:

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

Vi bruger toString () for at få den aktuelle værdi fra snedkeren.

Bemærk standardværdier, der returneres af bindere. EN Snedker uden præfiks og suffiks returnerer en tom Snor hvorimod snedker med præfiks og suffiks returnerer a Snor indeholder både præfiks og suffiks.

Vi kan ændre standard Snor returneres ved hjælp af setEmptyValue ():

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

Her returnerer begge deltagere EMPTY_JOINER konstant.

Standardværdien returneres kun, når StringJoiner er tom.

4. Flet deltagere

Vi kan fusionere to deltagere ved hjælp af fusionere(). Det tilføjer indholdet af det givne StringJoineruden præfiks og suffiks som det næste element:

@Test offentlig ugyldig nårMergingJoiners_thenReturnMerged () {StringJoiner rgbJoiner = ny 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øn, Blå, Cyan-Magenta-Gul-Sort]"); }

Bemærk hvordan “-“ bruges til at sammenkæde indhold af cmybJoiner mens rgbJoiner stadig bruger “,”.

5. Strøm API

Det er stort set alt, hvad vi kan gøre med StringJoiner.

Der er en mere indirekte brug, der kan findes i Strøm API:

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

Collectors.joining () internt brug StringJoiner at udføre sammenføjningsoperationen.

6. Konklusion

I denne hurtige vejledning illustrerede vi, hvordan du bruger StringJoiner klasse. Samlet set StringJoiner virker meget primitiv og undlader at adressere nogle grundlæggende brugssager som at slutte sig til elementerne på en liste. Det ser ud til at være primært designet til Samlere.

Hvis StringJoiner opfylder ikke vores krav, der er andre populære og magtfulde biblioteker, såsom Guava.

Og som normalt kan alle kilder findes på GitHub.


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