/**
 * An interface for a hashtable
 **/
public interface MyHashTable<Key, Value> {

	/**
	 * check whether the hashtable is empty
	 */ 
	public boolean isEmpty();

	/**
	 * check whether the hashtable contains a specific key
	 */
	public boolean has(Key key);

	/**
	 *  get the object associated with a specific key
	 * @throws java.util.NoSuchElementException
	 * 	if the specified key is not in the hashtable
	 */ 
	public Value get(Key key);

	/**
	 *  remove the object associated with a specific key
	 * @throws java.util.NoSuchElementException
	 * 	if the specified key is not in the hashtable
	 */ 
	public Value remove(Key key);

	/**
	 * Add key to the hashtable and associate it with value
	 */
	public void put(Key key, Value value);

	/**
	 * Return the number of keys in the hashtable
	 */ 
	public int elements();

}
