Úvod do programování - Cvičení č. 11


Autor: Miroslav Beneš
Organizace: Katedra informatiky FEI VŠB-TU Ostrava
Popis: Na ukázkových příkladech se seznámíte s implementací vyhledávací tabulky a s použitím knihovních tříd z balíku java.util.

Úkoly

  1. Třída ArrayMap. Prostudujte příklad Priklad1, ve kterém je implementováno zjednodušené rozhraní Map třídou ArrayMap pomocí dvojice seznamů.

    V seznamu keys jsou uloženy klíče a v paralelním seznamu values jsou na odpovídajících indexech uloženy hodnoty položek.

    Rozhraní a třídy: Map, ArrayMap, Priklad1

  2. Rozhraní a třídy z balíku java.util. Prostudujte třídu Priklad2, která ukazuje použití rozhraní a tříd ze standardního balíku java.util. Doplňte rozhraní Map a jeho implementaci ArrayMap z předchozího příkladu tak, aby bylo možné je použít ve třídě Priklad2 místo standardních verzí.
    To znamená, že do rozhraní Map doplníte definici vnořeného rozhraní Entry s metodami getKey() a getValue() a dále doplníte metodu entrySet(), která vrátí množinu položek typu Entry, které obsahují klíč i hodnotu.
  3. Analýza zastoupení znaků. Vytvořte program, který pro zadaný soubor určí počty výskytů jednotlivých znaků a vytiskne je přehledně v tabulce.
    Pro ukládání počtu výskytů znaků použijte tabulku typu TreeMap nebo HashMap, přičemž jako klíč použijte vždy příslušné písmeno (obalené jako instance třídy Character) a jako hodnotu odpovídající počet výskytů (opět obalený jako instanci třídy Integer). Např.
        Map tabulka = new TreeMap();
        // předpokládáme, že jsme přečetli ze vstupu znak ch
        Character znak = new Character(ch);
        Integer pocet = (Integer)tabulka.get(znak);
        if( pocet == null )
           tabulka.put(znak, new Integer(1));
        else
           tabulka.put(znak, new Integer(pocet.intValue() + 1));
    
    Zpracovávaný text čtěte nejprve ze standardního vstupu a později program upravte tak, aby bylo možné zadat jako parametr programu jméno vstupního souboru. Po zpracování celého textu vypište tabulku obsahující vždy znak a počet jeho výskytů v textu.