Pre viac informácií prečítajte:
Zoznam funkcionálnych interfaceov v Java 8: https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
Najčastejšie používané:
Interface | Vstup | Výstup |
---|---|---|
Function<T,R> | T | R |
Predicate<T> | T | boolean |
Consumer<T> | T | void |
Supplier<T> | – | T |
UnaryOperator<T> | T | T |
BinaryOperator<T> | (T, T) | T |
Implementujte metódu byAuthorSurname tak aby zoznam bookList pretransformovala na mapu, kde kľúčom je priezvisko autora a hodnotou je zoznam kníh daného autora zoradených abecedne podľa ich názvu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class ListToMap { private final List<Book> bookList = Arrays.asList( new Book("Book B", new Author("Jozko", "Mrkvicka")), new Book("Book A", new Author("Jozko", "Mrkvicka")), new Book("Book BBB", new Author("Jozko", "Mrkvicka")), new Book("Book AA", new Author("Jozko", "Mrkvicka")), new Book("Book C", new Author("Jozko", "Mrkvicka")), new Book("Book C", new Author("Adam", "Krt")), new Book("Book A", new Author("Adam", "Krt")), new Book("Book B", new Author("Adam", "Krt")) ); public Map<String, List<Book>> byAuthorSurname() { } } |
1 2 3 4 5 |
public class Book { private String title; private Author author; // gettre, settre, constructor } |
1 2 3 4 5 |
public class Author { private String name; private String surname; // gettre, settre, constructor } |
Implementujte funkcie books() a booksWithAutor() v triede MapToList. Prvá funkcia len prevedie mapu získanú volaním funkcie byAuthorSurname() z predchádzajúcej úlohy na zoznam kníh. Druhá funkcia zoberie staticky definovanú mapu Author:List<Book> a najprv nasetuje každej knihe autora a následne celú mapu flatne na list podobne ako predchádzajúca funkcia.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public class MapToList { private static final Map<Author, List<Book>> map = new HashMap<Author, List<Book>>() {{ put(new Author("Jozko", "Mrkvicka"), Arrays.asList( new Book("Book A"), new Book("Book B"), new Book("Book C") )); put(new Author("Adam", "Krt"), Arrays.asList( new Book("Book D"), new Book("Book E") )); }}; public List<Book> books() { ListToMap listToMap = new ListToMap(); Map<String, List<Book>> map = listToMap.byAuthorSurname(); // TODO } public List<Book> booksWithAuthor() { // TODO } } |
Implementujte funkcie v triede Range tak aby vrátili zoznam párnych (even) resp. nepárnych (odd) čísel. Pri implementácii využite private funkciu filter, ktorú zavolajte z public funkcií s vhodnými argumentami.
1 2 3 4 5 6 7 8 9 10 |
public class Range { public List<Integer> even(int from, int to) { } public List<Integer> odd(int from, int to) { } private List<Integer> filter(int from, int to, IntPredicate predicate) { } } |