Java 8 StringJoiner

1. Bemutatkozás

StringJoiner egy új osztály a Java 8 alatt java.util csomag.

Egyszerűen fogalmazva, csatlakozásra használható Húrok elválasztó, előtag és utótag használatával.

2. Elemek hozzáadása

Hozzátehetjük Húrok használni a add () módszer:

@Test public void whenAddingElements_thenJoinedElements () {StringJoiner asztalos = új StringJoiner (",", PREFIX, SUFFIX); asztalos.add ("piros") .add ("zöld") .add ("kék"); assertEquals (asztalos.toString (), "[Piros, Zöld, Kék]"); }

Ha egy lista összes eleméhez szeretnénk csatlakozni, akkor végig kell vonnunk a listát. Sajnos a használatával nincs egyszerű módszer StringJoiner:

@Test public void whenAddingListElements_thenJoinedListElements () {List rgbList = new ArrayList (); rgbList.add ("Piros"); rgbList.add ("Zöld"); rgbList.add ("kék"); StringJoiner rgbJoiner = új StringJoiner (",", PREFIX, SUFFIX); mert (karakterlánc színe: rgbList) {rgbJoiner.add (szín); } assertEquals (rgbJoiner.toString (), "[Piros, Zöld, Kék]"); }

3. Építés

A StringJoiner, meg kell említenünk a határolót. Opcionálisan megadhatjuk azt az előtagot és utótagot is, amelynek jelen kell lennie az eredményben:

privát karakterlánc PREFIX = "["; privát karakterlánc SUFFIX = "]"; @Test public void whenEmptyJoinerWithoutPrefixSuffix_thenEmptyString () {StringJoiner asztalos = új StringJoiner (","); assertEquals (0, joiner.toString (). hossz ()); } @Test public void whenEmptyJoinerJoinerWithPrefixSuffix_thenPrefixSuffix () {StringJoiner asztalos = új StringJoiner (",", PREFIX, SUFFIX); assertEquals (joiner.toString (), PREFIX + SUFFIX); }

Használunk toString () hogy megkapja az asztalos aktuális értékét.

Jegyezzük meg az asztalosok által visszaadott alapértelmezett értékeket. A Asztalos előtag és utótag nélkül üreset ad vissza Húr míg az előtaggal és utótaggal rendelkező asztalos a-t ad vissza Húr előtagot és utótagot egyaránt tartalmaz.

Megváltoztathatjuk az alapértelmezettet Húr használatával visszaadta setEmptyValue ():

@Test public void whenEmptyJoinerWithEmptyValue_thenDefaultValue () {StringJoiner asztalos = új StringJoiner (","); joiner.setEmptyValue ("alapértelmezett"); assertEquals (joiner.toString (), "alapértelmezett"); } @Test public void whenEmptyJoinerWithPrefixSuffixAndEmptyValue_thenDefaultValue () {StringJoiner asztalos = új StringJoiner (",", PREFIX, SUFFIX); joiner.setEmptyValue ("alapértelmezett"); assertEquals (joiner.toString (), "alapértelmezett"); }

Itt mindkét csatlakozó visszaadja a EMPTY_JOINER állandó.

Az alapértelmezett érték csak akkor jelenik meg, ha a StringJoiner üres.

4. Asztalosok egyesítése

Két asztalt egyesíthetünk összeolvad(). Hozzáadja az adott tartalmát StringJoinerelőtag és utótag nélkül következő elemként:

@Test public void whenMergingJoiners_thenReturnMerged () {StringJoiner rgbJoiner = new StringJoiner (",", PREFIX, SUFFIX); StringJoiner cmybJoiner = új StringJoiner ("-", PREFIX, SUFFIX); rgbJoiner.add ("Piros") .add ("Zöld") .add ("Kék"); cmybJoiner.add ("Cián") .add ("Magenta") .add ("Sárga") .add ("Fekete"); rgbJoiner.merge (cmybJoiner); assertEquals (rgbJoiner.toString (), "[Piros, Zöld, Kék, Cián-Magenta-Sárga-Fekete]"); }

Jegyezze meg, hogyan “-“ a tartalmának összefűzésére szolgál cmybJoiner míg rgbJoiner még mindig használja “,”.

5. Folyam API

Nagyjából ennyit tehetünk StringJoiner.

Van még egy közvetett felhasználás, amely megtalálható a Folyam API:

@Test public void whenUsedWithinCollectors_thenJoined () {List rgbList = Arrays.asList ("Piros", "Zöld", "Kék"); Karakterlánc vesszőSeparatedRGB = rgbList.stream () .map (color -> color.toString ()) .collect (Collectors.joining (",")); assertEquals (vesszőSeparatedRGB, "Piros, Zöld, Kék"); }

Collectors.joining () belsőleg használja StringJoiner a csatlakozási művelet végrehajtására.

6. Következtetés

Ebben a gyors bemutatóban bemutattuk a StringJoiner osztály. Összességében a StringJoiner nagyon primitívnek tűnik, és nem foglalkozik néhány alapvető használati esettel, például a lista elemeihez való csatlakozással. Úgy tűnik, elsősorban arra tervezték Gyűjtők.

Ha StringJoiner nem felel meg a követelményeinknek, vannak más népszerű és nagy teljesítményű könyvtárak, például Gujávafa.

És mint általában, minden forrás megtalálható a GitHubon.


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