Table of Contents

10 - Java mapreduce kungfu

Možné řešení z minulého cvičení

https://gitlab.fel.cvut.cz/B211_B6B36OMO/seminar/-/tree/master/cv9_solution

Teorie

Pro ty, kteří nebyli na přednáškách: - přednáška a (nebo) Java 8 streams na Oracle

Zadání

Stáhněte si z repository základ cvičení 10:

https://gitlab.fel.cvut.cz/B231_B6B36OMO/seminar/-/tree/master/cv10_assignment Cvičení má dvě části:

Část I: - Základ a mírně pokročilé

Struktura:

1. findAllTransactionsIn2011AndSortByValueAsc()

Nalezněte všechny transakce provedené v roce 2011 a setřiďte je podle velikost. Hint: operace filter(), sorted() a collect()

2. getUniqueCitiesSortedAsc()

Vypište unikátní seznam měst.

3. getSingleStringFromUniqueTradersNamesSortByNameAsc()

Vypište řetězec, který vypisuje seznam obchodníků ve formátu “Traders: name1 name2 … ”- např. “Traders: Bob George”, ''. Hint: použijte reduce() operaci

4. isSomeTraderFromCity()

Existuje pro zadané město nějaký obchodník? Hint. operace anyMatch()

5. findSmallestTransactionUsingReduce()

Nalezněte nejmenší transakci. Pro nalezní použijte reduce() operaci

6. getTradersByTown()

Vraťte obchodníky zgrupovné podle města. Hint. operace groupingBy()

7. getTradersCountsByTown()

Vraťte počty obchodníků zgrupovné podle města.

8. partitionTransactionsByTraderIsVegetarian()

Rozdělte transakce na dvě skupiny - první, provedené vegetariány a druhá ostatní. Hint. operace partitionBy()

Část II - Pokročilé

Struktura:

1. Fibonaciho posloupnost

Vygenerujte sekvenci <{0, 1},{1, 1},{1, 2},{2, 3},{3, 5},{5, 8}…>. Hint. použijte indukci (iterate())

2. Pythagorovy trojice

Vygenerujte pythagorovy trojice <{3.0, 4.0, 5.0}, {5.0, 12.0, 13.0}, {6.0, 8.0, 10.0}… >. Hint. IntStream.rangeClosed(0, 1000) .boxed() vrací stream Iteger hodnot 0 až 1000.

Design workshop

V prezentaci naleznete rozsáhlejší příklad.