מציאת מקסימום / דקה של רשימה או אוסף

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, מקסימום); }

בואו נסתכל מקרוב על הקוד:

  1. יִעוּד זרם() שיטה ברשימה כדי לקבל זרם ערכים מהרשימה
  2. יִעוּד mapToInt (ערך -> ערך) בזרם כדי לקבל זרם שלם
  3. יִעוּד מקסימום () השיטה בזרם כדי לקבל את הערך המקסימלי
  4. יִעוּד orElseThrow () לזרוק חריג אם לא מתקבל ערך ממנו מקסימום ()

3. מצא מינימום עם אובייקטים מותאמים אישית

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

בואו נגדיר תחילה את ה- POJO המותאם אישית:

אדם בכיתה {שם מחרוזת; גיל שלם; // קונסטרוקציות סטנדרטיות, קבוצות וקובעות}

אנחנו רוצים למצוא את אדם חפץ עם גיל המינימום:

@ מבחן ציבורי בטל כאשר ListIsOfPersonObjectThenMinCanBeDoneUsingCustomComparatorThroughLambda () {// אדם נתון alex = אדם חדש ("אלכס", 23); אדם ג'ון = אדם חדש ("ג'ון", 40); אדם פטר = אדם חדש ("פיטר", 32); רשימת אנשים = Arrays.asList (אלכס, ג'ון, פיטר); // ואז אדם minByAge = אנשים .stream () .min (Comparator.comparing (אדם :: getAge)) .orElseThrow (NoSuchElementException :: חדש); assertEquals ("צריך להיות אלכס", אלכס, minByAge); }

בואו נסתכל על ההיגיון הזה:

  1. יִעוּד זרם() שיטה ברשימה כדי לקבל זרם ערכים מהרשימה
  2. יִעוּד דקה () שיטה בזרם כדי לקבל את הערך המינימלי. אנו מעבירים פונקציית למבדה כמשווה, זה משמש להחלטת לוגיקת המיון להחלטת הערך המינימלי
  3. יִעוּד orElseThrow () לזרוק חריג אם לא מתקבל ערך מ- min()

4. מסקנה

במאמר מהיר זה בדקנו כיצד ה- מקסימום () ו דקה () שיטות מג'אווה 8 זרם ניתן להשתמש ב- API מצא את הערך המקסימלי והמינימלי מ- a רשימה / אוסף.

כמו תמיד, הקוד זמין ב- Github.


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