גויאבה - הצטרפו ופיצלו אוספים
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 של גויאבה שלי - זהו פרויקט מבוסס ליקוי חמה, כך שיהיה קל לייבא ולהפעיל אותו כפי שהוא.