4it101»Java8pr 9 Reseni

Java8pr 9 Reseni

Příklad Transformace - řešení

Metoda map() dokáže prvky datového proudu převést na prvky buď jiného typu nebo pouze modifikovat jeho hodnoty (z tohoto důvodu je v tomto úkolu potřebná). Veškerý kód je možné vložit do metody main(), která je v zadání již předpřipravena.

Obě části úlohy jsou si v řešení podobné. Co se týče první části, je nutné vytvořit výsledný seznam čísel jako List<Integer>. Tomuto seznamu se na konci přiřadí výsledek. Nejprve se vytvoří datový proud z výchozího seznamu čísel. Na ten se následně zavolá metoda map(), která má jako parametr funkční rozhraní Function<T,R>. Instanci tohoto rozhraní lze snadno vytvořit ze třídy implementované pomocí lambda výrazu. Parametrem lambda výrazu je číslo z výchozího seznamu a vrací se jeho druhá mocnina (tzn. provede se násobení daného čísla sebou samým). Nakonec je pouze zavolána metoda collect(), která zajistí správný typ výstupu (v tomto případě List).

Druhá část se týká seznamu názvů měst. Opět je nutné vytvořit datový proud z původního seznamu názvů měst. Následně se zavolá metoda map(). Zde je parametrem textový řetězec původního seznamu reprezentující název města. Zavoláním metody toUpperCase() na daný textový řetězec, získáme název města velkými písmeny. Nakonec je opět zavolána metoda collect() zajišťující správný typ výstupu, tzn. seznam typu List. Jak původní, tak i ty upravené seznamy jsou pak v ukázce níže vypsány pro kontrolu do konzole.


FunkceMap in = new FunkceMap();

List<Integer> cisla = in.getSeznamCisel();
List<Integer> seznamDruhychMocnin = cisla.stream().map((i) -> i * i).collect(Collectors.toList());
System.out.println("Původní seznam:" + cisla);
System.out.println("Seznam druhých mocnin:" + seznamDruhychMocnin);

List<String> mesta = in.getSeznamMest();
List<String> seznamMestUpraveny = mesta.stream().map((i) -> i.toUpperCase()).collect(Collectors.toList());
System.out.println("Původní seznam měst:" + mesta);
System.out.println("Seznam upravených názvů měst:" + seznamMestUpraveny);


 

Celkové řešení je v projektu Transformace - řešení.