Clasa HashSet

In pachetul java.util exista trei clase de tabele de dispersie: HashSet, HashMap si Hashtable. O vom studia aici pe prima dintre ele, celelalte fiind studiate in capitolul "Mapari".

Clasa java.util.HashSet implementeaza interfata java.util.Set. Instantele acestei clase sunt multimi implementate ca tabele de dispersie. Datorita acestui fapt, operatiile de cautare si punere (adaugare) a unui element au complexitatea O(1).

Clasa HashSet extinde clasa java.util.AbstractSet, deci mosteneste toate metodele acesteia. La fel ca in cazul claselor ArrayList si Vector, capacitatea tabelului de elemente este variabila: la construirea instantei clasei HashSet se aloca un tablou de referinte la obiecte cu o anumita capacitate initiala. Daca insa, in timpul executarii programului, factorul de umplere depaseste o valoare limita, se aloca automat un nou tablou de capacitate mai mare. Atat capacitatea initiala, cat si valoarea limita a factorului de umplere pot fi impuse prin program sau pot fi date implicit.
 
Clasa HashSet are urmatorii constructori:
   public HashSet() - construieste o tabela de dispersie cu capacitate initiala data implicit si cu limita factorului de umplere 0.75;
   public HashSet(Collection c) - construieste o tabela de dispersie care contine toate elementele colectiei c, are capacitatea dubla fata de numarul de elemente din c, iar factorul de umplere limita este 0.75;
   public HashSet(int initialCapacity, float loadFactor) - construieste o tabela de dispersie, avand capacitatea initiala si factorul de umplere limita date;
public HashSet(int initialCapacity) - construieste o tabela de dispersie cu capacitate initiala data si cu factorul de umplere limita 0.75.

Clasa HashSet mosteneste toate metodele clasei AbstractSet, dar are urmatoarele metode redefinite:
contains, add, remove, isEmpty, size, iterator, clear, clone.

Exemplu
In fisierul TestHashSet.java este dat un exemplu de aplicatie, in care se testeaza clasa HashSet. La lansarea in executie, se da ca argument in linia de comanda un text, ale carui cuvinte vor fi puse in tabela de dispersie. Dupa fiecare adaugare a unui nou cuvant se afiseaza continutul intregii tabele. Se face apoi cautarea unui cuvant existent si a unui cuvant inexistent si se elimina unul din cuvintele continute. Dupa fiecare operatie se afiseaza continutul tabelei.



© Copyright 2001 - Severin BUMBARU, Universitatea "Dunarea de Jos" din Galati