Implementujte vyhledávací tabulku pomocí dvou seznamů obsahujících klíče a
k nim přidružené hodnoty.
Budeme vycházet z toho, že klíče a jim příslušející hodnoty jsou uloženy sice
v různých seznamech, ale na stejných indexech. Konstruktor této tabulky získá jako
parametr počáteční kapacitu tabulky. Jako seznam budeme používat třídu
ArrayList, která zajistí konstantní čas přístupu k prvkům na zadaném indexu.
class ArrayMap implements Map {
public ArrayMap(int capacity) {
keys = new ArrayList(capacity);
values = new ArrayList(capacity);
}
public Object put(Object key, Object value) {
int index = keys.indexOf(key);
if( index < 0 ) {
keys.add(key);
values.add(value);
return null;
}
Object oldValue = values.get(index);
values.set(index, value);
return oldValue;
}
public Object get(Object key)
{
int index = keys.indexOf(key);
if( index < 0 ) return null;
return values.get(index);
}
public Object remove(Object key)
{
int index = keys.indexOf(key);
if( index < 0 ) return null;
Object oldValue = values.get(index);
keys.remove(index);
values.remove(index);
return oldValue;
}
private ArrayList keys;
private ArrayList values;
}
|