final public boolean delete(final K key) {
    int index = computeHash(keyData(key)) % size ;
    if (index < 0) index += size ;
    if (table[index] == null)
      return false ;
    Entry <K, V> link = table[index] ;
    if (link.next == null) {
      table[index] = null ;
      return true ;
    }
    Entry <K, V> prior = null ;
    for (; link != null ; link = link.next, prior = link)
      if (equals(link.key, key)) {
        if (prior != null) prior.next   = link.next ;
        else               table[index] = link.next ;
        return true ;
      }
    return false ;
  }