[so] Nelamurire Tema 2

Mircea Gherzan mgherzan at anaconda.cs.pub.ro
Thu Apr 2 14:47:14 EEST 2009


Salutare,

Bulent Duagi <bulent.duagi at gmail.com> wrote:
> In enunt se vorbeste de un hastable ("cheie"->hashCode->"valoare"),
> insa in momentul in care se face o adaugare sunt folosite doar valori
> ("a test" - adauga test sau "a vincent" - adauga vincent), ar trebui
> sa consideram ca de fapt pentru o valoarea cheia e codul sau hash ?
> Daca e asa atunci de ce in exemplu dat pentru afisare "doctor gachet"
> sunt in acelasi bucket cand "doctor" are cheia 80 iar "gachet" 209
> (analog pentru celalalt exemplu)? Cu alte cuvinte cum trebuie sa
> interpretam adaugarea ?

Exemplul de afisare presupunea ca cele 2 cuvinte de pe o linie au
aceeasi valoare de dispersie, pentru o anume functie. E doar un exemplu
de _afisare_.

Pornesti gresit de la premisa ca hashtable-ul furnizeaza o _interfata_
de mapare key-valoare (dictionar). Da, implementarea se face pe baza
unei chei (valoarea data de functia de dispersie), dar scopul este
stocarea si utilizarea eficienta a unei multimi/colectii de obiecte.  

Interfata din Java la care ar trebui sa te uiti este HashSet [1]:

O poza buna gasiti la [2]. Adaugarea, in cadrul unei coliziuni.
_trebuie_ facuta la finalul listei/vectorului.

[1] http://java.sun.com/javase/6/docs/api/java/util/HashSet.html
[2] http://en.wikipedia.org/wiki/Hash_table#Separate_chaining

-- 
Mircea


More information about the so mailing list