Also um es an einem Beispiel zu veranschaulichen, nehmen wir mal an ich wollte eine Liste mit der Größe von 100 Elementen in einer Hashtable speichern, und ich würde die Hashtable mit der Größe der Liste initialisieren, dann würde die Hashtable sich nach dem 75. Eintrag reorganisieren, richtig? Dann müsste ich die Hashtable so initialisieren, dass ich die 100 Einträge ohne Reorganisierung reinbekomme, also mit dem Faktor 1,25 multiplizieren, wenn ich die Formel jetzt richtig umgestellt habe... Demnach initialisiere ich die Hashtable mit:
liste.size() * 1.25 um alle Listenelemente ohne Reorganisation zu speichern.
Ich hoffe ich hab das jetzt so richtig verstanden...
Was mich jetzt aber vollkommen verwirrt ist das Zitat!! Dort steht:
Note that the hash table is open: in the case of a "hash collision", a single bucket stores multiple entries, which must be searched sequentially.
Wenn man sich aber das Kommentar und den Quelltext von "put" ansieht, dann steht da:
@return the previous value of the specified key in this hashtable
Code:
for (Entry<K,V> e = tab[index] ; e != null ; e = e.next) {
if ((e.hash == hash) && e.key.equals(key)) {
V old = e.value;
e.value = value;
return old;
}
}
Das sieht mir eher danach aus, dass der alte Wert gnadenlos rausgeworfen wird. Noch anschaulicher ist putAll:
Copies all of the mappings from the specified map to this hashtable. These mappings will replace any mappings that this hashtable had for any of the keys currently in the specified map.
Hmmm, hmmmm, hmmm hab gerade noch etwas darüber nachgedacht, ob ich mich da nicht gerade komplett irre... ick wees et nüscht