Egy lista vagy gyűjtemény max / percének megkeresése

1. Bemutatkozás

Gyors bevezető arról, hogyan lehet megtalálni a min / max értéket egy adott listából / gyűjteményből a nagy teljesítményűekkel Folyam API Java8-ban.

2. Keresse meg a Max-ot az egész számok listáján

Tudjuk használni max () módszer révén biztosított java.util.Stream felület. Elfogad egy módszer referenciát:

@Test public void whenListIsOfIntegerThenMaxCanBeDoneUsingIntegerComparator () {// megadott List listOfIntegers = Tömbök.asList (1, 2, 3, 4, 56, 7, 89, 10); Egész várható várható eredmény = 89; // akkor Egész szám max = listOfIntegers .stream () .mapToInt (v -> v) .max (). vagyElseThrow (NoSuchElementException :: new); assertEquals ("89-nek kell lennie", várható eredmény, max); }

Vizsgáljuk meg közelebbről a kódot:

  1. Hívás folyam() módszer a listán, hogy értékfolyamot kapjon a listáról
  2. Hívás mapToInt (érték -> érték) a falon, hogy egész számot kapj
  3. Hívás max () metódust az adatfolyamon a maximális érték megszerzéséhez
  4. Hívás vagyElseThrow () kivételt vetni, ha nem kapnak értéket max ()

3. Keresse meg a Min egyedi tárgyakkal

Az egyedi objektumok min / max megtalálásához lambda kifejezést is megadhatunk az előnyben részesített rendezési logikánkhoz.

Először definiáljuk az egyedi POJO-t:

osztály Személy {Karakter neve; Egész életkor; // szabványos kivitelezők, mérőeszközök és beállítók}

Meg akarjuk találni a Személy tárgy a minimális életkorral:

@Test public void whenListIsOfPersonObjectThenMinCanBeDoneUsingCustomComparatorThroughLambda () {// adott személy alex = új személy ("Alex", 23); Person john = új Személy ("John", 40); Személy péter = új Személy ("Péter", 32); Személyek felsorolása = Arrays.asList (alex, john, peter); // akkor Person minByAge = people .stream () .min (Comparator.comparing (Person :: getAge)) .orElseThrow (NoSuchElementException :: new); assertEquals ("Alexnek kell lennie", alex, minByAge); }

Vessünk egy pillantást erre a logikára:

  1. Hívás folyam() módszer a listán, hogy értékfolyamot kapjon a listáról
  2. Hívás perc () módszert a folyamon, hogy megkapja a minimális értéket. Egy lambda függvényt adunk át összehasonlító eszközként, ezt használjuk a minimális érték eldöntésének rendezési logikájának eldöntésére
  3. Hívás vagyElseThrow () kivételt dobni, ha nem kapunk értéket min()

4. Következtetés

Ebben a gyors cikkben azt kutattuk, hogyan max () és perc () módszerek a Java 8-ból Folyam Az API használható keresse meg a maximális és minimális értéket a-ból Lista / Gyűjtemény.

Mint mindig, a kód elérhető a Githubon.


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