גויאבה - הצטרפו ופיצלו אוספים

1. סקירה כללית

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

2. להמיר רשימה לְתוֹך חוּט באמצעות נַגָר

נתחיל בדוגמה פשוטה להצטרפות ל- רשימה לתוך חוּט באמצעות נַגָר. בדוגמה הבאה אנו מצטרפים ל- רשימה של שמות לאחד חוּט באמצעות הפסיק "," כמפריד:

@ מבחן פומבי בטל כאשר ConvertListToString_thenConverted () {List names = Lists.newArrayList ("John", "Jane", "Adam", "Tom"); תוצאת מחרוזת = Joiner.on (","). להצטרף (שמות); assertEquals (תוצאה, "ג'ון, ג'יין, אדם, טום"); }

3. להמיר מַפָּה ל חוּט באמצעות נַגָר

הבא - בואו נראה כיצד להשתמש נַגָר להמיר א מַפָּה אל א חוּט. בדוגמה הבאה אנו משתמשים withKeyValueSeparator () להצטרף למפתח עם הערך שלו:

@ מבחן ציבורי בטל כאשרConvertMapToString_thenConverted () {משכורת מפה = Maps.newHashMap (); משכורת.פלט ("ג'ון", 1000); משכורת.פלט ("ג'יין", 1500); תוצאת מחרוזת = Joiner.on (",") .withKeyValueSeparator ("=") .join (משכורת); assertThat (תוצאה, containString ("ג'ון = 1000")); assertThat (תוצאה, containString ("ג'יין = 1500")); }

4. הצטרף לאוספים מקוננים

עכשיו - בואו נראה איך להצטרף לאוספים מקוננים ל- חוּט. בדוגמה הבאה אנו מצטרפים לתוצאה של שינוי כל אחד מהם רשימה אל א חוּט:

@Test הציבור בטל כאשרJoinNestedCollections_thenJoined () {רשימה מקונן = Lists.newArrayList (Lists.newArrayList ("תפוח", "בננה", "כתום"), Lists.newArrayList ("חתול", "כלב", "ציפור"), Lists.newArrayList ("ג'ון", "ג'יין ", "אדם")); תוצאת מחרוזת = Joiner.on (";"). להצטרף (Iterables.transform (פונקציה חדשה מקוננת() {@ עקירה ציבורית מחרוזת חלה (קלט רשימה) {החזר Joiner.on ("-"). להצטרף (קלט); }})); assertThat (תוצאה, containString ("תפוח-בננה-תפוז")); assertThat (תוצאה, containString ("חתול-כלב-ציפור")); assertThat (תוצאה, containString ("תפוח-בננה-תפוז")); }

5. טפל בערכי אפס בזמן השימוש נַגָר

עכשיו - בואו נראה דרכים שונות לטיפול בערכים אפסיים תוך שימוש במצטרף.

ל דלג על ערכי null תוך הצטרפות לשימוש באוסף skipNulls () כמו בדוגמה הבאה:

@ מבחן ציבורי בטל כאשר ConvertListToStringAndSkipNull_thenConverted () {List names = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); תוצאת מחרוזת = Joiner.on (","). SkipNulls (). להצטרף (שמות); assertEquals (תוצאה, "ג'ון, ג'יין, אדם, טום"); }

אם אתה לא רוצה לדלג על ערכי null ורוצה להחליף אותם במקום, להשתמש useForNull () כמו בדוגמה הבאה:

@ מבחן ציבורי בטל כאשר UsForNull_thenUsed () {List names = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); תוצאת מחרוזת = Joiner.on (","). UseForNull ("ללא שם"). להצטרף (שמות); assertEquals (תוצאה, "ג'ון, חסר שם, ג'יין, אדם, טום"); }

ציין זאת useForNull () לא משנה את הרשימה המקורית, זה משפיע רק על תפוקת ההצטרפות.

6. צור רשימה מ חוּט באמצעות ספליטר

עכשיו - בואו נראה איך לפצל a חוּט לתוך רשימה. בדוגמה הבאה אנו משתמשים במפריד "-" כדי לפצל את הקלט חוּט ל רשימה:

@ מבחן ציבורי בטל כאשרCreateListFromString_thenCreated () {קלט מחרוזת = "תפוח - בננה - כתום"; תוצאת רשימה = Splitter.on ("-"). TrimResults (). SplitToList (קלט); assertThat (התוצאה מכילה ("תפוח", "בננה", "כתום")); }

ציין זאת trimResults () מסיר את החלל הלבן המוביל והנגרר מהמתחים שנוצרו.

7. צור מַפָּה מ חוּט באמצעות ספליטר

לאחר מכן - בואו נראה כיצד ליצור מפה ממחרוזת באמצעות ספליטר. בדוגמה הבאה אנו משתמשים withKeyValueSeparator () לפצל א חוּט לתוך מַפָּה:

@ מבחן פומבי בטל כאשרCreateMapFromString_thenCreated () {קלט מחרוזת = "ג'ון = ראשון, אדם = שני"; תוצאת מפה = Splitter.on (",") .withKeyValueSeparator ("="). Split (קלט); assertEquals ("first", result.get ("John")); assertEquals ("שנייה", result.get ("אדם")); }

8. פיצול חוּט עם מפרידים מרובים

עכשיו - בואו נראה איך לפצל a חוּט עם מפרידים מרובים. בדוגמה הבאה אנו משתמשים בשני "." ו "," לפצל את שלנו חוּט:

@ מבחן פומבי בטל כאשר SplitStringOnMultipleSeparator_thenSplit () {קלט מחרוזת = "apple.banana ,, כתום ,,."; תוצאת רשימה = Splitter.onPattern ("[.,]") .OmitEmptyStrings () .splitToList (קלט); assertThat (התוצאה מכילה ("תפוח", "בננה", "כתום")); }

ציין זאת omitEmptyStrings () מתעלם ממחרוזות ריקות ולא מוסיף אותם לתוצאה רשימה.

9. פיצול א חוּט באורך ספציפי

הבא - בואו נסתכל על פיצול a חוּט באורך ספציפי. בדוגמה הבאה, אנו מחלקים את שלנו חוּט כל 3 תווים:

@ מבחן ציבורי בטל כאשרSplitStringOnSpecificLength_thenSplit () {String input = "שלום עולם"; תוצאת רשימה = Splitter.fixedLength (3) .splitToList (קלט); assertThat (התוצאה מכילה ("Hel", "lo", "wor", "ld")); }

10. הגבל את התוצאה המפוצלת

לסיום - בואו נראה איך להגביל את התוצאה המפוצלת. אם אתה רוצה את ספליטר ל להפסיק לפצל לאחר מספר ספציפי של פריטים - להשתמש לְהַגבִּיל() כמו בדוגמה הבאה:

@ מבחן ציבורי בטל כאשר LimitSplitting_thenLimited () {קלט מחרוזת = "a, b, c, d, e"; תוצאת רשימה = Splitter.on (",") .limit (4) .splitToList (קלט); assertEquals (4, result.size ()); assertThat (התוצאה מכילה ("a", "b", "c", "d, e")); }

11. מסקנה

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

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


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