hashmap.ts 732 Bytes
export class HashMap<K extends EqualsObject, V> {
    private values: Array<HashItem<K, V>> = new Array();

    get(key: K): V {
        let found = this.values.find( function(value: HashItem<K, V>) {
            return value.key.equals(key);
        });
        if (found) {
            return found.value;
        }
        return null;
    }

    put(key: K, value: V): void {
        this.values.push(new HashItem(key, value));
    }

    clear() {
        this.values = new Array();
    }
}

export class HashItem<K, V> {
    key: K;
    value: V;
    constructor(key: K, value: V) {
        this.key = key;
        this.value = value;
    }
}

export abstract class EqualsObject {

    abstract equals(other: any): boolean;

}