Mi chiedo perché non utilizzare Hashtable utilizzando hashcode negativo?Hashtable hashing avoid hashcode negativo
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
Dove (hash & 0x7FFFFFFF)
rende il bit relativo da 0 a positivo, ma perché non abbiamo potuto trattare il numero intero a 32 bit con segno come unsigned? o anche usare i trucchi modulari per renderlo positivo. Ad esempio,
public static long int_mod(int hashcode, int tab_length){
return (hashcode % tab_length + tab_length) % tab_length;
}
Penso che questo metodo sia semplice e funzionante. E probabilmente è per questo che è stato usato. '(hash e 0x7FFFFFFF)' stretto al positivo, '% tab.length' stretto alla dimensione della scheda. Semplice pulito e facile. –
a quale metodo ti riferisci? l'implementazione originale? – peter
Sì. Il già implementato. –