Java 8 StringJoiner

1. Uvod

StringJoiner je nova klasa dodana u Javi 8 pod java.util paket.

Jednostavno rečeno, može se koristiti za spajanje Žice koristeći graničnik, prefiks i sufiks.

2. Dodavanje elemenata

Možemo dodati Žice koristiti dodati() metoda:

@Test public void whenAddingElements_thenJoinedElements () {StringJoiner joiner = new StringJoiner (",", PREFIX, SUFFIX); stolar.add ("Crvena") .add ("Zelena") .add ("Plava"); assertEquals (joiner.toString (), "[Crvena, Zelena, Plava]"); }

Ako se želimo pridružiti svim elementima popisa, morat ćemo ga pregledati. Nažalost, ne postoji jednostavan način za to pomoću StringJoiner:

@Test public void whenAddingListElements_thenJoinedListElements () {List rgbList = new ArrayList (); rgbList.add ("Crveno"); rgbList.add ("Zeleno"); rgbList.add ("Plavo"); StringJoiner rgbJoiner = novi StringJoiner (",", PREFIX, SUFFIX); za (Boja niza: rgbList) {rgbJoiner.add (boja); } assertEquals (rgbJoiner.toString (), "[Crvena, Zelena, Plava]"); }

3. Izgradnja

Da bi se konstruirala instanca StringJoiner, moramo spomenuti graničnik. Po želji možemo odrediti i prefiks i sufiks koji bi trebali biti prisutni u rezultatu:

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

Koristimo toString () da biste dobili trenutnu vrijednost od stolara.

Imajte na umu zadane vrijednosti koje su vratili stolari. A Stolar bez prefiksa i sufiksa vraća prazno Niz dok stolar s prefiksom i sufiksom vraća a Niz koji sadrži i prefiks i sufiks.

Možemo promijeniti zadani Niz vraćen korištenjem setEmptyValue ():

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

Ovdje oba stolara vraćaju PRAZNO_JOINER konstantno.

Zadana vrijednost vraća se samo kada StringJoiner prazno je.

4. Spoji stolare

Možemo spojiti dva stolara pomoću sjediniti(). Dodaje sadržaj datog StringJoinerbez prefiksa i sufiksa kao sljedeći element:

@Test public void whenMergingJoiners_thenReturnMerged () {StringJoiner rgbJoiner = new StringJoiner (",", PREFIX, SUFFIX); StringJoiner cmybJoiner = novi StringJoiner ("-", PREFIX, SUFFIX); rgbJoiner.add ("Crvena") .add ("Zelena") .add ("Plava"); cmybJoiner.add ("Cyan") .add ("Magenta") .add ("Yellow") .add ("Black"); rgbJoiner.merge (cmybJoiner); assertEquals (rgbJoiner.toString (), "[Crvena, Zelena, Plava, Cijan-Magenta-Žuta-Crna]"); }

Imajte na umu kako “-“ koristi se za spajanje sadržaja cmybJoiner dok rgbJoiner još uvijek koristiti “,”.

5. Stream API

To je gotovo sve što možemo učiniti StringJoiner.

Postoji još jedna neizravna upotreba koja se može naći u Stream API:

@Test public void whenUsedWithinCollectors_thenJoined () {List rgbList = Arrays.asList ("Red", "Green", "Blue"); Niz zarezSeparatedRGB = rgbList.stream () .map (color -> color.toString ()) .collect (Collectors.joining (",")); assertEquals (zarezSeparatedRGB, "Crvena, zelena, plava"); }

Kolekcionari.joining () interno koristi StringJoiner za izvođenje operacije spajanja.

6. Zaključak

U ovom smo brzom vodiču ilustrirali kako se koristi StringJoiner razred. Općenito StringJoiner čini se vrlo primitivnim i ne obrađuje neke osnovne slučajeve upotrebe poput spajanja elemenata popisa. Čini se da je prvenstveno namijenjen za Kolekcionari.

Ako StringJoiner ne udovoljava našim zahtjevima, postoje druge popularne i moćne knjižnice, poput Guava.

Kao i obično, svi izvori mogu se naći na GitHubu.


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