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.