Seminář 5 (Úkoly)
Úkol č.1
S využitím rozhraní
public interface Mapping { Object map(Object o); }Implementujte metodu
List<Object> map(List<Object> list, Mapping m)
, která se chová stejně jako funkce map
, známá ze Schemu/Lispu.
Úkol č.2
Stejným způsobem navrhněte metodu List<Object> filter(List<Object> list, Condition c)
, která ze seznamu vybere hodnoty splňující danou podmínku. Navrhňete vhdnou třídu/rozhraní Condition
. Metodu otestujte výběrem sudých celých čísel ze seznamu. Podmínku vytvořte jako vnitřní třídu, jako anonymní třídu i jako lambda výraz.
Úkol č.3
Implementujte statickou metodu String repeatChar1(char c, int n)
, která vytvoří řetezec skládající se z n
znaků c
s použitím konkatenace řetězců (tj. s += c
). Implementujte metodu String repeatChar2(char c, int n)
, která se bude chovat identicky jako metoda repeatChar1
, ale bude používat StringBuilder
. Změřte rychlost obou metod (s využitím System.currentTimeMillis
) při vytváření řetězce o velikosti 100000 znaků. Z výsledků si vemte morální ponaučení!
Vyřešené úkoly zašlete do 29.10.2014 17:00 CET na email petr.krajca (zavináč) upol.cz s předmětem ZP3JV. Zasílejte pouze zdrojové kódy. Pokud chcete zdrojové kódy poslat zkomprimované, použijte buď formát zip nebo kombinaci tar+gz.