ספר בישול לאוספי גויאבה

1. הקדמה

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

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

2. המתכונים

להוריד רשימה לרשימה

הערה: זהו דרך לעקיפת הבעיה עבור אוספים שאינם מיוצרים משתנים ב- Java

מחלקה CastFunction מיישמת את הפונקציה {@ החל מהגמר הציבורי הסופי T (סופי F מ) {החזרה (T) מ; }} רשימת originalList = Lists.newArrayList (); רשימת theList = Lists.transform (originalList, CastFunction חדש ());

אלטרנטיבה פשוטה יותר ללא גויאבה - הכוללת 2 פעולות יצוקה

רשימת originalList = Lists.newArrayList (); רשימת theList = (רשימה) (רשימה) originalList;

הוספת איטרציה לאוסף

Iter Iterable = Lists.newArrayList (); אספן אוספים = Lists.newArrayList (); Iterables.addAll (אספן, איטר);

בדוק אם האוסף מכיל אלמנטים על פי כלל התאמה מותאם אישית

ICable TheCollection = Lists.newArrayList ("a", "bc", "def"); בוליאני מכיל = Iterables.any (theCollection, Predicate חדש) {@Override ציבור בוליאני חל (קלט מחרוזת סופי) {return input.length () == 1;}}); assertTrue (מכיל);

פתרון חלופי באמצעות חיפוש

ICableableCollection = Sets.newHashSet ("a", "bc", "def"); בוליאני מכיל = Iterables.find (theCollection, Predicate חדש) {@Override ציבור בוליאני חל (קלט מחרוזת סופי) {return input.length () == 1;}})! = null; assertTrue (מכיל);

פיתרון חלופי החל רק על סטים

הגדר את theCollection = Sets.newHashSet ("a", "bc", "def"); בוליאני מכיל =! Sets.filter (theCollection, Predicate חדש) {@Override ציבור בוליאני להחיל (קלט מחרוזת סופי) {return input.length () == 1;}}). isEmpty (); assertTrue (מכיל);

NoSuchElementException עַל Iterables.find כששום דבר לא נמצא

ICableableCollection = Sets.newHashSet ("abcd", "efgh", "ijkl"); Predicate inputOfLengthOne = Predicate new () {@ Override בוליאני ציבורי החל (קלט מחרוזת סופי) {return input.length () == 1; }}; מחרוזת נמצאה = Iterables.find (theCollection, inputOfLengthOne);

- זה יזרוק ה NoSuchElementException יוצא מן הכלל:

java.util.NoSuchElementException ב com.google.common.collect.AbstractIterator.next (AbstractIterator.java:154) ב com.google.common.collect.Iterators.find (Iterators.java:712) ב com.google.common. collect.Iterables.find (Iterables.java:643)

פִּתָרוֹן: יש עומס יתר למצוא שיטה זה לוקח את ערך ההחזרה המוגדר כברירת מחדל כארגומנט וניתן להתקשר אליו עם ריק להתנהגות הרצויה:

מחרוזת נמצאה = Iterables.find (theCollection, inputOfLengthOne, null);

הסר את כל ערכי ה- null מאוסף

ערכי רשימה = Lists.newArrayList ("a", null, "b", "c"); Iterable withoutNulls = Iterables.filter (ערכים, Predicates.notNull ());

ליצור ישירות רשימה / סט / מפה בלתי ניתנים לשינוי

ImmutableList immutableList = ImmutableList.of ("a", "b", "c"); ImmutableSet immutableSet = ImmutableSet.of ("a", "b", "c"); ImmutableMap imuttableMap = ImmutableMap.of ("k1", "v1", "k2", "v2", "k3", "v3");

ליצור רשימה / סט / מפה בלתי ניתנים לשינוי מאוסף סטנדרטי

List muttableList = Lists.newArrayList (); ImmutableList immutableList = ImmutableList.copyOf (muttableList); Set muttableSet = Sets.newHashSet (); ImmutableSet immutableSet = ImmutableSet.copyOf (muttableSet); Map muttableMap = Maps.newHashMap (); ImmutableMap imuttableMap = ImmutableMap.copyOf (muttableMap);

פתרון חלופי באמצעות בונים

List muttableList = Lists.newArrayList (); ImmutableList immutableList = ImmutableList. בונה (). addAll (muttableList) .build (); Set muttableSet = Sets.newHashSet (); ImmutableSet immutableSet = ImmutableSet. בונה (). addAll (muttableSet) .build (); Map muttableMap = Maps.newHashMap (); ImmutableMap imuttableMap = ImmutableMap. בונה (). putAll (muttableMap) .build ();

3. ספרי בישול נוספים של גויאבה

גויאבה היא ספרייה מקיפה ושימושית להפליא - הנה כמה ממשקי API נוספים המכוסים בצורה של ספר בישול:

  • ספר בישול להזמנת גויאבה

  • ספר בישול פונקציונלי של גויאבה

תהנה.

4. הולך קדימה

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

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

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


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