Nájdenie maximálnej / minimálnej hodnoty v zozname alebo zbierke
1. Úvod
Stručné úvodné slovo, ako nájsť mocnú / minimálnu hodnotu z daného zoznamu alebo zbierky Prúd API v jazyku Java8.
2. Nájdite Maxa v zozname celých čísel
Môžeme použiť max () metóda poskytovaná prostredníctvom java.util.Stream rozhranie. Prijíma odkaz na metódu:
@Test public void whenListIsOfIntegerThenMaxCanBeDoneUsingIntegerComparator () {// uvedený Zoznam listOfIntegers = Arrays.asList (1, 2, 3, 4, 56, 7, 89, 10); Celé číslo očakávanéVýsledok = 89; // potom Integer max = listOfIntegers .stream () .mapToInt (v -> v) .max (). orElseThrow (NoSuchElementException :: new); assertEquals ("Malo by byť 89", expectResult, max); }
Pozrime sa bližšie na kód:
- Telefonovanie Prúd() metóda na zozname na získanie prúdu hodnôt zo zoznamu
- Telefonovanie mapToInt (hodnota -> hodnota) v streame získate Integer Stream
- Telefonovanie max () metóda v streame na získanie maximálnej hodnoty
- Telefonovanie aleboElseThrow () vyvolať výnimku, ak nie je prijatá hodnota z max ()
3. Nájdite min s vlastnými objektmi
Aby sme našli min / max na vlastných objektoch, môžeme tiež poskytnúť výraz lambda pre našu preferovanú logiku triedenia.
Najprv definujeme vlastné POJO:
trieda Osoba {meno reťazca; Celé číslo; // štandardné konštruktory, getre a setre}
Chceme nájsť Osoba objekt s minimálnym vekom:
@Test public void whenListIsOfPersonObjectThenMinCanBeDoneUsingCustomComparatorThroughLambda () {// zadaná osoba alex = nová osoba ("Alex", 23); Osoba john = nová osoba („John“, 40); Osoba peter = nová osoba („Peter“, 32); Zoznam ľudí = Arrays.asList (alex, john, peter); // potom Person minByAge = people .stream () .min (Comparator.comparing (Person :: getAge)) .orElseThrow (NoSuchElementException :: new); assertEquals ("Mal by to byť Alex", alex, minByAge); }
Pozrime sa na túto logiku:
- Telefonovanie Prúd() metóda na zozname na získanie prúdu hodnôt zo zoznamu
- Telefonovanie min () metóda v streame na získanie minimálnej hodnoty. Predávame funkciu lambda ako komparátor, ktorý sa používa na rozhodnutie logiky triedenia pre určenie minimálnej hodnoty.
- Telefonovanie aleboElseThrow () vyvolať výnimku, ak nie je prijatá hodnota od min()
4. Záver
V tomto rýchlom článku sme skúmali, ako max () a min () metódy z Java 8 Prúd API sa dá použiť na najdi maximalnu a minimalnu hodnotu z a Zoznam / Zbierka.
Ako vždy, kód je k dispozícii na stránkach Github.