Pronalaženje maks. / Min. Popisa ili zbirke
1. Uvod
Kratki uvod o načinu pronalaska min / max vrijednosti s datog popisa / kolekcije pomoću moćnih Stream API u Javi8.
2. Pronađite Maxa na popisu cjelovitih brojeva
Možemo koristiti maks. () metoda osigurana putem java.util.Stream sučelje. Prihvaća referencu metode:
@Test public void whenListIsOfIntegerThenMaxCanBeDoneUsingIntegerComparator () {// dati popis listOfIntegers = Arrays.asList (1, 2, 3, 4, 56, 7, 89, 10); Cjelobrojni očekivani rezultat = 89; // tada Integer max = listOfIntegers .stream () .mapToInt (v -> v) .max (). orElseThrow (NoSuchElementException :: new); assertEquals ("Trebao bi biti 89", očekivani rezultat, maks.); }
Pogledajmo pobliže kod:
- Pozivanje stream () metodu na popisu za dobivanje toka vrijednosti s popisa
- Pozivanje mapToInt (vrijednost -> vrijednost) na streamu kako biste dobili cjeloviti tok
- Pozivanje maks. () metodom na streamu da biste dobili maksimalnu vrijednost
- Pozivanje iliElseThrow () da se izuzme iznimka ako se ne primi vrijednost maks. ()
3. Pronađite Min s prilagođenim objektima
Da bismo pronašli min / max na prilagođenim objektima, možemo pružiti i lambda izraz za željenu logiku sortiranja.
Prvo definirajmo prilagođeni POJO:
razred Osoba {Ime niza; Cijela dob; // standardni konstruktori, getteri i postavljači}
Želimo pronaći Osoba objekt s minimalnom dobi:
@Test public void whenListIsOfPersonObjectThenMinCanBeDoneUsingCustomComparatorThroughLambda () {// data Person alex = new Person ("Alex", 23); Osoba john = nova osoba ("Ivan", 40); Osoba peter = nova osoba ("Petar", 32); Popis ljudi = Arrays.asList (alex, john, peter); // tada je osoba minByAge = people .stream () .min (Comparator.comparing (Person :: getAge)) .orElseThrow (NoSuchElementException :: new); assertEquals ("Trebao bi biti Alex", alex, minByAge); }
Pogledajmo ovu logiku:
- Pozivanje stream () metodu na popisu za dobivanje toka vrijednosti s popisa
- Pozivanje min () metodom na streamu da bi se dobila minimalna vrijednost. Prosljeđujemo lambda funkciju kao komparator, to se koristi za odlučivanje logike sortiranja za odlučivanje o minimalnoj vrijednosti
- Pozivanje iliElseThrow () izbaciti iznimku ako od min. ne dobije vrijednost()
4. Zaključak
U ovom kratkom članku istražili smo kako maks. () i min () metode iz Jave 8 Stream API se može koristiti za pronađite maksimalnu i minimalnu vrijednost iz a Popis / Zbirka.
Kao i uvijek, kôd je dostupan na Githubu.