Java 8 StringJoiner

1. Úvod

StringJoiner je nová trieda pridaná do Java 8 pod java.util balíček.

Jednoducho povedané, dá sa použiť na spájanie Struny s využitím oddeľovača, predpony a prípony.

2. Pridávanie prvkov

Môžeme pridať Struny pomocou pridať () metóda:

@Test public void whenAddingElements_thenJoinedElements () {StringJoiner joiner = new StringJoiner (",", PREFIX, SUFFIX); joiner.add ("červená") .add ("zelená") .add ("modrá"); assertEquals (joiner.toString (), "[červená, zelená, modrá]"); }

Ak sa chceme spojiť so všetkými prvkami zoznamu, budeme musieť prechádzať zoznamom. Bohužiaľ neexistuje jednoduchý spôsob, ako to urobiť pomocou StringJoiner:

@Test public void whenAddingListElements_thenJoinedListElements () {List rgbList = new ArrayList (); rgbList.add ("červená"); rgbList.add ("Zelená"); rgbList.add ("modrá"); StringJoiner rgbJoiner = nový StringJoiner (",", PREFIX, SUFFIX); pre (Farba reťazca: rgbList) {rgbJoiner.add (farba); } assertEquals (rgbJoiner.toString (), "[červená, zelená, modrá]"); }

3. Konštrukcia

Vytvoriť inštanciu StringJoiner, musíme spomenúť oddeľovač. Voliteľne môžeme určiť aj predponu a príponu, ktoré by mali byť vo výsledku:

private String PREFIX = "["; private String SUFFIX = "]"; @Test public void whenEmptyJoinerWithoutPrefixSuffix_thenEmptyString () {StringJoiner joiner = new StringJoiner (","); assertEquals (0, joiner.toString (). length ()); } @Test public void whenEmptyJoinerJoinerWithPrefixSuffix_thenPrefixSuffix () {StringJoiner joiner = new StringJoiner (",", PREFIX, SUFFIX); assertEquals (joiner.toString (), PREFIX + SUFFIX); }

Používame natiahnuť() získať aktuálnu hodnotu od stolára.

Všimnite si predvolené hodnoty vrátené stolármi. A Stolár bez predpony a prípony vráti prázdne miesto String zatiaľ čo truhlár s predponou a príponou vráti a String obsahujúci predponu aj príponu.

Môžeme zmeniť predvolené nastavenie String vrátené pomocou setEmptyValue ():

@Test public void whenEmptyJoinerWithEmptyValue_thenDefaultValue () {StringJoiner joiner = new StringJoiner (","); joiner.setEmptyValue ("predvolené"); assertEquals (joiner.toString (), "predvolené"); } @Test public void whenEmptyJoinerWithPrefixSuffixAndEmptyValue_thenDefaultValue () {StringJoiner joiner = new StringJoiner (",", PREFIX, SUFFIX); joiner.setEmptyValue ("predvolené"); assertEquals (joiner.toString (), "predvolené"); }

Tu obidvaja stolári vrátia EMPTY_JOINER konštantný.

Predvolená hodnota sa vráti iba vtedy, keď StringJoiner je prázdny.

4. Zlúčte stolárov

Môžeme zlúčiť dvoch stolárov pomocou zlúčiť(). Doplní obsah daného StringJoinerbez predpony a prípony ako ďalší prvok:

@Test public void whenMergingJoiners_thenReturnMerged () {StringJoiner rgbJoiner = new StringJoiner (",", PREFIX, SUFFIX); StringJoiner cmybJoiner = nový StringJoiner ("-", PREFIX, SUFFIX); rgbJoiner.add ("červená"). add ("zelená"). add ("modrá"); cmybJoiner.add ("azúrová"). add ("purpurová"). add ("žltá"). add ("čierna"); rgbJoiner.merge (cmybJoiner); assertEquals (rgbJoiner.toString (), "[červená, zelená, modrá, azúrová-purpurová-žltá-čierna]"); }

Všimnite si ako “-“ sa používa na zreťazenie obsahu cmybJoiner zatiaľ čo rgbJoiner stále používať “,”.

5. Prúd API

To je skoro všetko, s čím môžeme urobiť StringJoiner.

Existuje ešte jedno nepriame použitie, ktoré možno nájsť v Prúd API:

@Test public void whenUsedWithinCollectors_thenJoined () {List rgbList = Arrays.asList ("červená", "zelená", "modrá"); Reťazec commaSeparatedRGB = rgbList.stream () .map (color -> color.toString ()) .collect (Collectors.joining (",")); assertEquals (commaSeparatedRGB, „červená, zelená, modrá“); }

Collectors.joining () interne používa StringJoiner vykonať spojovaciu operáciu.

6. Záver

V tomto rýchlom výučbe sme ilustrovali, ako používať StringJoiner trieda. Celkovo StringJoiner sa zdá byť veľmi primitívny a nerieši niektoré základné prípady použitia, ako je pripojenie sa k prvkom zoznamu. Zdá sa, že je primárne určený pre Zberatelia.

Ak StringJoiner nespĺňa naše požiadavky, existujú aj ďalšie populárne a výkonné knižnice, ako napr Guava.

A ako obvykle, všetky zdroje nájdete na GitHube.


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