final public void put(final K key, final V value) {
    int index = computeHash(keyData(key)) % size ;
    if (index < 0) index += size ;
    if (table[index] != null) {
      for (Entry <K, V> link = table[index] ; link != null ; link = link.next)
        if (equals(link.key, key)) {
          link.value = value ;
          return ;
        }
    }
    final Entry <K, V> entry = new Entry <K, V> (key, value) ;
    entry.next = table[index] ;
    table[index] = entry ;
  }