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:
- Hívás folyam() módszer a listán, hogy értékfolyamot kapjon a listáról
- Hívás mapToInt (érték -> érték) a falon, hogy egész számot kapj
- Hívás max () metódust az adatfolyamon a maximális érték megszerzéséhez
- 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:
- Hívás folyam() módszer a listán, hogy értékfolyamot kapjon a listáról
- 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
- 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.