Классы, создающие множества

 

Класс HashSet полностью реализует интерфейс set и итератор типа iterator . Класс Hashset используется в тех случаях, когда надо хранить только одну копию каждого элемента.

В классе HashSet четыре конструктора:

Hashset () — создает пустой объект с показателем загруженности 0,75;

HashSet (int capacity) — создает пустой объект с начальной емкостью capacity и показателем загруженности 0,75;

HashSet (int capacity, float loadFactor) — создает пустой объект с начальной емкостью capacity и показателем загруженности loadFactor ;

HashSet (Collection coll) — создает объект, содержащий все элементы коллекции coll , с емкостью, равной удвоенному числу элементов коллекции coll , но не менее 11, и показателем загруженности 0,75.

 

Упорядоченные множества

 

Класс TreeSet полностью реализует интерфейс sortedset и итератор типа iterator . Класс TreeSet реализован как бинарное дерево поиска, значит, его элементы хранятся в упорядоченном виде. Это значительно ускоряет поиск нужного элемента. 

Порядок задается либо естественным следованием элементов, либо объектом, реализующим интерфейс сравнения Comparator .

Этот класс удобен при поиске элемента во множестве, например, для проверки, обладает ли какой-либо элемент свойством, определяющим множество.

В классе TreeSet четыре конструктора:

TreeSet () — создает пустой объект с естественным порядком элементов;

TreeSet (Comparator с) — создает пустой объект, в котором порядок задается объектом сравнения с;

TreeSet (Collection coll) — создает объект, содержащий все элементы коллекции coll , с естественным порядком ее элементов;

TreeSet (SortedMap sf) — создает объект, содержащий все элементы отображения sf , в том же порядке.

В листинге 6.7 показано, как можно хранить комплексные числа в упорядоченном виде. Порядок задается объектом класса ComplexCompare , определенного в листинге 6.6.

 

 Листинг 6.7. Хранение комплексных чисел в упорядоченном виде 

TreeSet ts = new TreeSet (new ComptexCompare()); 

ts.add(new Complex(1.2, 3.4));

ts. add (new Complex (-1.25, 33.4»; 

ts.add(new Complex(1.23, -3.45));

ts.add(new Complex(16.2, 23.4));

Iterator it = ts.iterator();

while(it.hasNext()) , ((Complex)it.next()).pr();