מציאת מקסימום / דקה של רשימה או אוסף
1. הקדמה
מבוא מהיר כיצד למצוא את הערך min / max מרשימה / אוסף נתון עם החזקים זרם ממשק API ב- Java8.
2. מצא את מקס ברשימת המספרים השלמים
אנחנו יכולים להשתמש מקסימום () השיטה הניתנת באמצעות java.util.Stream מִמְשָׁק. הוא מקבל התייחסות לשיטה:
@Test הציבור מבוטל כאשר ListIsOfIntegerThenMaxCanBeDoneUsingIntegerComparator () {// נתון רשימה listOfIntegers = Arrays.asList (1, 2, 3, 4, 56, 7, 89, 10); מספר שלם צפוי תוצאות = 89; // ואז מספר שלם מקסימום = listOfIntegers .stream () .mapToInt (v -> v) .max (). orElseThrow (NoSuchElementException :: new); assertEquals ("צריך להיות 89", expectResult, מקסימום); }
בואו נסתכל מקרוב על הקוד:
- יִעוּד זרם() שיטה ברשימה כדי לקבל זרם ערכים מהרשימה
- יִעוּד mapToInt (ערך -> ערך) בזרם כדי לקבל זרם שלם
- יִעוּד מקסימום () השיטה בזרם כדי לקבל את הערך המקסימלי
- יִעוּד orElseThrow () לזרוק חריג אם לא מתקבל ערך ממנו מקסימום ()
3. מצא מינימום עם אובייקטים מותאמים אישית
על מנת למצוא את המינימום / מקסימום באובייקטים מותאמים אישית, אנו יכולים גם לספק ביטוי למבדה להיגיון המיון המועדף עלינו.
בואו נגדיר תחילה את ה- POJO המותאם אישית:
אדם בכיתה {שם מחרוזת; גיל שלם; // קונסטרוקציות סטנדרטיות, קבוצות וקובעות}
אנחנו רוצים למצוא את אדם חפץ עם גיל המינימום:
@ מבחן ציבורי בטל כאשר ListIsOfPersonObjectThenMinCanBeDoneUsingCustomComparatorThroughLambda () {// אדם נתון alex = אדם חדש ("אלכס", 23); אדם ג'ון = אדם חדש ("ג'ון", 40); אדם פטר = אדם חדש ("פיטר", 32); רשימת אנשים = Arrays.asList (אלכס, ג'ון, פיטר); // ואז אדם minByAge = אנשים .stream () .min (Comparator.comparing (אדם :: getAge)) .orElseThrow (NoSuchElementException :: חדש); assertEquals ("צריך להיות אלכס", אלכס, minByAge); }
בואו נסתכל על ההיגיון הזה:
- יִעוּד זרם() שיטה ברשימה כדי לקבל זרם ערכים מהרשימה
- יִעוּד דקה () שיטה בזרם כדי לקבל את הערך המינימלי. אנו מעבירים פונקציית למבדה כמשווה, זה משמש להחלטת לוגיקת המיון להחלטת הערך המינימלי
- יִעוּד orElseThrow () לזרוק חריג אם לא מתקבל ערך מ- min()
4. מסקנה
במאמר מהיר זה בדקנו כיצד ה- מקסימום () ו דקה () שיטות מג'אווה 8 זרם ניתן להשתמש ב- API מצא את הערך המקסימלי והמינימלי מ- a רשימה / אוסף.
כמו תמיד, הקוד זמין ב- Github.