Java 8 StringJoiner

1. הקדמה

StringJoiner הוא מחלקה חדשה שנוספה ב- Java 8 תחת java.util חֲבִילָה.

פשוט שים, זה יכול לשמש להצטרפות מיתרים שימוש במתחם, בקידומת ובסיומת.

2. הוספת אלמנטים

אנחנו יכולים להוסיף מיתרים משתמש ב לְהוֹסִיף() שיטה:

@ מבחן ציבורי בטל כאשר הוספת Elements_thenJoinedElements () {StringJoiner joiner = StringJoiner new (",", PREFIX, SUFFIX); joiner.add ("אדום") .add ("ירוק") .add ("כחול"); assertEquals (joiner.toString (), "[אדום, ירוק, כחול]"); }

אם אנו רוצים להצטרף לכל האלמנטים ברשימה, נצטרך לעבור על הרשימה. למרבה הצער, אין דרך קלה לעשות זאת באמצעות StringJoiner:

@Test הציבור בטל כאשר AddListElements_thenJoinedListElements () {רשימה rgbList = ArrayList חדש (); rgbList.add ("אדום"); rgbList.add ("ירוק"); rgbList.add ("כחול"); StringJoiner rgbJoiner = StringJoiner חדש (",", PREFIX, SUFFIX); עבור (צבע מחרוזת: rgbList) {rgbJoiner.add (צבע); } assertEquals (rgbJoiner.toString (), "[אדום, ירוק, כחול]"); }

3. בנייה

לבנות מופע של StringJoiner, עלינו להזכיר את המפריד. באופן אופציונלי, אנו יכולים גם לציין את הקידומת והסיומת שאמורים להיות בתוצאה:

מחרוזת פרטית PREFIX = "["; מחרוזת פרטית SUFFIX = "]"; @Test ציבורי בטל כאשרEmptyJoinerWithoutPrefixSuffix_thenEmptyString () {StringJoiner joiner = StringJoiner new (","); assertEquals (0, joiner.toString (). אורך ()); } @Test הציבור בטל כאשרEmptyJoinerJoinerWithPrefixSuffix_thenPrefixSuffix () {StringJoiner joiner = StringJoiner new (",", PREFIX, SUFFIX); assertEquals (joiner.toString (), PREFIX + SUFFIX); }

אנו משתמשים toString () כדי לקבל את הערך הנוכחי מהמצטרף.

שימו לב לערכי ברירת המחדל שהמצטרפים החזירו. א נַגָר ללא קידומת וסיומת מחזירה ריק חוּט ואילו הצטרפות עם קידומת וסיומת מחזירה a חוּט המכיל גם קידומת וגם סיומת.

אנו יכולים לשנות את ברירת המחדל חוּט הוחזר באמצעות setEmptyValue ():

@Test ציבורי בטל כאשרEmptyJoinerWithEmptyValue_thenDefaultValue () {StringJoiner joiner = StringJoiner new (","); joiner.setEmptyValue ("ברירת מחדל"); assertEquals (joiner.toString (), "ברירת מחדל"); } @Test ציבורי בטל כאשרEmptyJoinerWithPrefixSuffixAndEmptyValue_thenDefaultValue () {StringJoiner joiner = StringJoiner new (",", PREFIX, SUFFIX); joiner.setEmptyValue ("ברירת מחדל"); assertEquals (joiner.toString (), "ברירת מחדל"); }

הנה, שני המצטרפים מחזירים את EMPTY_JOINER קָבוּעַ.

ערך ברירת המחדל מוחזר רק כאשר ה- StringJoiner זה ריק.

4. מיזוג מצטרפים

אנו יכולים למזג שני מצטרפים באמצעות לְמַזֵג(). זה מוסיף את תוכן הנתון StringJoinerללא קידומת וסיומת כאלמנט הבא:

@ מבחן ציבורי בטל כאשרMergingJoiners_thenReturnMerged () {StringJoiner rgbJoiner = StringJoiner חדש (",", PREFIX, SUFFIX); StringJoiner cmybJoiner = StringJoiner חדש ("-", PREFIX, SUFFIX); rgbJoiner.add ("אדום") .add ("ירוק") .add ("כחול"); cmybJoiner.add ("ציאן"). להוסיף ("מג'נטה"). להוסיף ("צהוב"). להוסיף ("שחור"); rgbJoiner.merge (cmybJoiner); assertEquals (rgbJoiner.toString (), "[אדום, ירוק, כחול, ציאן-מגנטה-צהוב-שחור]"); }

שימו לב איך “-“ משמש לשרשור תוכן של cmybJoiner בזמן rgbJoiner עדיין להשתמש “,”.

5. זרם ממשק API

זה פחות או יותר כל מה שאנחנו יכולים לעשות איתו StringJoiner.

יש עוד שימוש עקיף אחד שניתן למצוא ב זרם ממשק API:

@ מבחן ציבורי בטל כאשר UsedWithinCollectors_thenJoined () {רשימה rgbList = Arrays.asList ("אדום", "ירוק", "כחול"); מחרוזת commaSeparatedRGB = rgbList.stream () .map (צבע -> color.toString ()) .collect (Collectors.joining (",")); assertEquals (commaSeparatedRGB, "אדום, ירוק, כחול"); }

Collectors.joining () שימוש פנימי StringJoiner לביצוע פעולת ההצטרפות.

6. מסקנה

במדריך מהיר זה, המחשנו כיצד להשתמש ב- StringJoiner מעמד. בסך הכל StringJoiner נראה פרימיטיבי מאוד ולא מצליח לטפל במקרי שימוש בסיסיים כמו הצטרפות לאלמנטים של רשימה. נראה שהוא נועד בעיקר עבור אספנים.

אם StringJoiner לא עונה על הדרישות שלנו, ישנן ספריות פופולריות וחזקות אחרות, כגון גויאבה.

וכרגיל, ניתן למצוא את כל המקורות ב- GitHub.


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