Clasa HashSet

In pachetul java.util există trei clase de tabele de dispersie: HashSet, HashMap și Hashtable. O vom studia aici pe prima dintre ele, celelalte fiind studiate in capitolul "Mapări".

Clasa java.util.HashSet implementează interfața java.util.Set. Instanțele acestei clase sunt mulțimi implementate ca tabele de dispersie. Datorită acestui fapt, operațiile de căutare și punere (adăugare) a unui element au complexitatea O(1).

Clasa HashSet extinde clasa java.util.AbstractSet, deci moștenește toate metodele acesteia. La fel ca în cazul claselor ArrayList și Vector, capacitatea tabelului de elemente este variabilă: la construirea instanței clasei HashSet se alocă un tablou de referințe la obiecte cu o anumită capacitate inițială. Dacă însă, în timpul executării programului, factorul de umplere depășește o valoare limită, se alocă automat un nou tablou de capacitate mai mare. Atât capacitatea inițială, cât și valoarea limită a factorului de umplere pot fi impuse prin program sau pot fi date implicit.
 
Clasa HashSet are următorii constructori:
   public HashSet() - construiește o tabelă de dispersie cu capacitate inițială implicită și cu limita factorului de umplere 0.75;
   public HashSet(Collection c) - construiește o tabelă de dispersie care conține toate elementele colecției c, are capacitatea dublă față de numărul de elemente din c, iar factorul de umplere limită este 0.75;
   public HashSet(int initialCapacity, float loadFactor) - construiește o tabelă de dispersie, având capacitatea inițială și factorul de umplere limită date ca parametri;
public HashSet(int initialCapacity) - construiește o tabelă de dispersie cu capacitate inițiala dată și cu factorul de umplere limită 0.75.

Clasa HashSet mostenește toate metodele clasei AbstractSet, dar are următoarele metode redefinite:
contains, add, remove, isEmpty, size, iterator, clear, clone.

Exemplu
In fișierul TestHashSet.java este dat un exemplu de aplicație, în care se testează clasa HashSet. La lansarea în execuție, se dă ca argument în linia de comandă un text, ale cărui cuvinte vor fi puse în tabela de dispersie. După fiecare adăugare a unui nou cuvânt se afișează conținutul întregii tabele. Se face apoi căutarea unui cuvânt existent și a unui cuvânt inexistent și se elimină unul din cuvintele conținute. După fiecare operație se afișează conținutul tabelei.



© Copyright 2001 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați