/* HashTableChained.java */

import DataStructures.*;
import Supporting.*;
import Exceptions.*;
import list.*;

/** This class implements a HashTable with chaining. */
public class HashTableChained implements HashTable {

  /** 
   * Construct a new hash table intended to hold 
   *  roughly sizeEstimate elements.
   */
  public HashTableChained (int sizeEstimate) {
    // FILL IN
  }

  /** 
   * Construct a new hash table with a default size. 
   */
  public HashTableChained () {
    // FILL IN
  }

  /**
   * Insert into the hash table. If the item is
   * already present, then replace it with the new item.
   * @param x the item to insert.
   */
  public void insert( Hashable x ) {
    // FILL IN
  }

  /**
   * Remove from the hash table.
   * @param x the item to remove.
   * @exception ItemNotFound if no item
   *     that matches x can be found in the hash table.
   */
  public void remove( Hashable x ) throws ItemNotFound {
    // FILL IN
  }

  /**
   * Find an item in the hash table.
   * @param x the item to search for.
   * @return the matching item.
   * @exception ItemNotFound if no item
   *     that matches x can be found in the hash table.
   */
  public Hashable find( Hashable x ) throws ItemNotFound {
    // FILL IN, REPLACING LINE BELOW
    return null;
  }

  /**
   * Make the hash table logically empty.
   */
  public void makeEmpty( ) {
    // FILL IN
  }

  // Add data fields and any additional methods here.

}