public int Remove( int key ) {
IntHashtableEntry[] tab = table;
int hash = key;
int index = ( hash & 0x7FFFFFFF ) % tab.Length;
for ( IntHashtableEntry e = tab[index], prev = null ; e != null ; prev = e, e = e.next ) {
if ( e.hash == hash && e.key == key ) {
if ( prev != null )
prev.next = e.next;
else
tab[index] = e.next;
--count;
return e.value;
}
}
return 0;
}