HashTable.java

  1. package ch.hslu.exercises.sw04.ex1;

  2. import java.util.Arrays;

  3. public final class HashTable implements Table<Integer> {

  4.     private final Integer[] data;
  5.     private int size = 0;

  6.     public HashTable(final int size) {
  7.         data = new Integer[size];

  8.     }

  9.     @Override
  10.     public boolean add(final Integer element) {
  11.         if (element != null) {
  12.             data[getIndexFromHashCode(element.hashCode())] = element;
  13.             size++;
  14.             return true;
  15.         } else {
  16.             return false;
  17.         }
  18.     }

  19.     @Override
  20.     public boolean remove(final Integer element) {
  21.         if (element != null) {
  22.             Integer possibleElement = data[getIndexFromHashCode(element.hashCode())];
  23.             if (element.equals(possibleElement)) {
  24.                 data[getIndexFromHashCode(element.hashCode())] = null;
  25.                 size--;
  26.                 return true;
  27.             }
  28.         }
  29.         return false;
  30.     }

  31.     @Override
  32.     public boolean contains(final Integer element) {
  33.         if (element != null) {
  34.             Integer possibleElement = data[getIndexFromHashCode(element.hashCode())];
  35.             return element.equals(possibleElement);
  36.         }
  37.         return false;
  38.     }

  39.     @Override
  40.     public int size() {
  41.         return size;
  42.     }

  43.     private int getIndexFromHashCode(final int hashCode) {
  44.         return hashCode % data.length;
  45.     }

  46.     @Override
  47.     public String toString() {
  48.         return "HashTable{"
  49.                 + "data=" + Arrays.toString(data)
  50.                 + ", size=" + size
  51.                 + '}';
  52.     }
  53. }