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:

  1. Telefonovanie Prúd() metóda na zozname na získanie prúdu hodnôt zo zoznamu
  2. Telefonovanie mapToInt (hodnota -> hodnota) v streame získate Integer Stream
  3. Telefonovanie max () metóda v streame na získanie maximálnej hodnoty
  4. 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:

  1. Telefonovanie Prúd() metóda na zozname na získanie prúdu hodnôt zo zoznamu
  2. 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.
  3. 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.


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