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

1. הקדמה

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

2. ספר הבישול

העוסקים באפסים באוסף

אפסים ראשונים

List toSort = Arrays.asList (3, 5, 4, null, 1, 2); Collections.sort (toSort, Ordering.natural (). NullsFirst ()); assertThat (toSort.get (0), nullValue ());

אפסים אחרונים

List toSort = Arrays.asList (3, 5, 4, null, 1, 2); Collections.sort (toSort, Ordering.natural (). NullsLast ()); assertThat (toSort.get (toSort.size () - 1), nullValue ());

הזמנה טבעית

List toSort = Arrays.asList (3, 5, 4, 1, 2); Collections.sort (toSort, Ordering.natural ()); assertTrue (Ordering.natural (). הוא הוזמן (toSort));

שרשור 2 הזמנות

List toSort = Arrays.asList (3, 5, 4, 1, 2); Collections.sort (toSort, Ordering.natural (). הפוך ());

להפוך הזמנה

List toSort = Arrays.asList (3, 5, 4, null, 1, 2); Collections.sort (toSort, Ordering.natural (). NullsLast (). הפוך ()); assertThat (toSort.get (0), nullValue ());

סדר מותאם אישית - מיתרים לפי אורך

מחלקה פרטית OrderingByLenght מרחיב הזמנה {@Override public int השווה (String s1, String s2) {return Ints.compare (s1.length (), s2.length ()); }} רשימה toSort = Arrays.asList ("zz", "aa", "b", "ccc"); סדר לפי אורך = חדש OrderingByLenght (); Collections.sort (toSort, לפי אורך); הזמנה צפויהסדר = Ordering.explicit (Lists.newArrayList ("b", "zz", "aa", "ccc")); assertTrue (expectOrder.isOrdered (toSort))

בדיקת סדר מפורש

רשימה toSort = Arrays.asList ("zz", "aa", "b", "ccc"); סדר לפי אורך = חדש OrderingByLenght (); Collections.sort (toSort, לפי אורך); הזמנה של expectOrder = Ordering.explicit (Lists.newArrayList ("b", "zz", "aa", "ccc")); assertTrue (expectOrder.isOrdered (toSort));

בדיקת הזמנת מחרוזות

רשימה toSort = Arrays.asList (3, 5, 4, 2, 1, 2); Collections.sort (toSort, Ordering.natural ()); assertFalse (Ordering.natural (). isStrictly Ordered (toSort));

הזמנה משנית

רשימה toSort = Arrays.asList ("zz", "aa", "b", "ccc"); סדר לפי אורך = חדש OrderingByLenght (); Collections.sort (toSort, byLength.compound (Ordering.natural ())); סדר סדרOderder = Ordering.explicit (Lists.newArrayList ("b", "aa", "zz", "ccc")); assertTrue (expectOrder.isOrdered (toSort));

דוגמה מורכבת להזמנות בהתאמה אישית - עם שרשור

רשימה toSort = Arrays.asList ("zz", "aa", null, "b", "ccc"); Collections.sort (toSort, OrderingByLenght חדש (). הפוך (). מתחם (Ordering.natural ()). NullsLast ()); System.out.println (toSort);

למיין באמצעות toString יִצוּג

List toSort = Arrays.asList (1, 2, 11); Collections.sort (toSort, Ordering.usingToString ()); OrderingOrdorder = Ordering.explicit (Lists.newArrayList (1, 11, 2)); assertTrue (expectOrder.isOrdered (toSort));

מיין, ואז מצא (חיפוש בינארי)

רשימה toSort = Arrays.asList (1, 2, 11); Collections.sort (toSort, Ordering.usingToString ()); int נמצא = Ordering.usingToString (). binarySearch (toSort, 2); System.out.println (נמצא);

מצא מינימום / מקסימום ללא צורך למיין (מהר יותר)

List toSort = Arrays.asList (2, 1, 11, 100, 8, 14); int נמצא = Ordering.usingToString (). דקה (toSort); assertThat (נמצא, שווה ל- (1));

יצירת עותק ממוין של הרשימה מהזמנה

רשימה toSort = Arrays.asList ("aa", "b", "ccc"); List sortedCopy = new OrderingByLenght (). SortedCopy (toSort); הזמנה של expectOrder = Ordering.explicit (Lists.newArrayList ("b", "aa", "ccc")); assertFalse (expectOrder.isOrdered (toSort)); assertTrue (expectOrder.isOrdered (sortedCopy));

יצירת עותק חלקי ממוין - כמה שפחות אלמנטים

רשימה toSort = Arrays.asList (2, 1, 11, 100, 8, 14); List minsteOf = Ordering.natural (). MinsteOf (toSort, 3); רשימה צפויה = Lists.newArrayList (1, 2, 8); assertThat (צפוי, שווה ל- (לפחות);

הזמנה באמצעות פונקציה מתווכת

List toSort = Arrays.asList (2, 1, 11, 100, 8, 14); Ordering ordering = Ordering.natural (). OnResultOf (Functions.toStringFunction ()); List sortedCopy = ordering.sortedCopy (toSort); רשימה צפויה = Lists.newArrayList (1, 100, 11, 14, 2, 8); assertThat (צפוי, שווה ל- (sortedCopy));

הערה: לוגיקת המיון תחילה תריץ את המספרים דרך הפונקציה - תהפוך אותם למיתרים - ואז תמיין לפי סדר טבעי על המיתרים

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

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

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

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

תהנה.

4. מסקנה

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

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

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


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