Kolekce v Javě
- Obrázek s třídami a rozhraními souvisejícími s kolekcemi.
- Rozhraní Collection.
- Rozhraní List.
- Rozhraní Set.
- U všech odkazů výše si všimněte, že v dokumentaci (nahoře) jsou všechny kolekce, které dané rozhraní implementují, a další rozhraní, které jej rozšiřují. Doporučuji si to alespoň pročíst, abyste tušili, co je k dispozici.
- I pro kolekce je pěkný tutoriál.
Úkoly
- Vytvořte množinu (
Set
) bodů (použijte tříduPoint
z minulých cvičení) a přesvědčte se, zda-li obsahuje duplicity. (Body zvolte tak, aby minimálně dva měly stejné souřadnice.) - Rozšiřte třídu
Point
z minulých cvičení tak, aby vhodně překryla metodyObject.equals
aObject.hashCode
. - Vytvořte množinu bodů jako v kroce 1. a přesvědčte se, že neobsahuje duplicity.
Implementujte statickou metodu Map<String, Integer> freq(String s)
,
která vrací četnost slov v daném textu, mezery, čísla a interpunkci ignorujte, tj.
chápejte je jako oddělovače slov.
Implementujte statickou metodu Map<String, Integer> freqIgnoreCase(String s)
,
která se chová stejně jako metoda freq
, ale nerozlišuje
velká a malá písmena.
Implementuje jednoduchou RPN kalkulačku.
Implementujte ji jako metodu int rpnCalc(String expr)
, kde jako
argument bude předaný výraz v postfixové notaci (např. "1 2 3 + +"
nebo "1 32 + 42 * 5 + 66 -"
) a
na výstupu bude hodnota výrazu. Kalkulačka by měla fungovat následovně. Výraz je rozložen na jednotlivé atomy a
potom je procházen zleva doprava. Pokud je nejlevější prvek číslo, je jeho hodnota uložena na zásobník, je-li
to operátor, jsou odebrány ze zásobníku dvě hodnoty a je provedena příslušná operace. Výsledná hodnota je
uložena na zásobník. Pro jednoduchost uvažujme pouze celá čísla a binární operace +, -, *, /.
Rozšiřte předchozí úkol tak, aby metoda int rpnCalc(String expr, Map <String, Integer> variables)
měla ještě jeden argument představující vazby proměnných. Pokud bude nalezen atom představující proměnnou, bude
příslušná hodnota uložena na zásobník. Např. "1 foo +" přečte hodnotu "foo" z argumentu variables
.
Vyřešené úkoly budou zkontrolovány na semináří.