Funkcionálne programovanie v Jave

Ciele

  1. Zoznámiť sa s možnosťami použitia funkcionálneho prístupu v jazyku Java.

Postup

Krok 1

Úloha 1.1

Trieda Products definuje vnorený typ record Product(String name, int value) reprezentujúci názvy a hodnoty produktov.

Úloha 1.2

Implementujte metódu Products.getValue() s použitím funkcionálneho prístupu. Táto funkcia dostane názov a zoznam produktov a ich hodnôt a má spočítať súčet hodnôt produktov so zadaným názvom. Úloha a je analogická úlohe z druhého cvičenia.

public static int getValue(String name, List<Product> products) { ... }

Poznámka

Pre všetky triedy sú už implementované jednotkové testy, ktoré môžete použiť pre overenie správnosti vášho riešenia.

Úloha 1.3

Implementujte funkciu Replacer.replace() s použitím funkcionálneho prístupu. Táto funkcia má realizovať nahradzovanie slov vo vete podľa zoznamu náhrad.

public static String replace(List<Replacement> replacements, String sentence) { ... }

Poznámka

Na rozdelenie reťazca na slová je možné použiť funkciu String.split(String), na spojenie — Collectors.joining(CharSequence)

Krok 2: Agregácia výsledkov

Úloha 2.1

Implementujte metódu ExamResults.getStatistics(), ktorá vypočíta štatistiky z výsledkov skúšky. Použite rôzne operácie na prúdoch.

record Statistics(double average, int passed, int failed, Optional<Integer> best) {}

public static Statistics getStatistics(List<Integer> scores) { ... }

Štatistiky majú obsahovať:

  • Priemernú hodnotu (average)
  • Počet úspešných (skóre ≥ 50) (passed)
  • Počet neúspešných (failed)
  • Najlepšie skóre ako Optional (prázdne ak zoznam je prázdny) (best)

Krok 3: Histogram

Úloha 3.1

V tom istom projekte implementujte chýbajúce metódy v triede Histogram realizujúce vykresľovanie histogramu. Táto úloha je podobná úlohe z cvičenia 3.

Poznámka

Jednotlivé funkcie pracuje s riadkami uloženými v prúdoch. Až na koniec sú riadky z týchto prúdov pozbierané do výsledného reťazca.