Колекції (Collections) в Java. Set

серпня
08
2012

Зміст

Set - наступна колекція, яка буде розглянута. У статті піде мова про інтерфейс Set, а також про класи HashSet, LinkedHashSet і TreeSet.

Set - колекція, яка не може містити однакових елементів, що повторюються. Більш формально, колекція не може містити пари елементів e1 і e2 такі, що виконується умова e1.equals(e2) і не більше одного null елемента. Іноді цю колекцію називають множиною.

На Рис.1 наведено ієрархія класів Set.

Рис 1. Ієрархія Set во фреймворке Collections
Рис 1. Ієрархія Set во фреймворке Collections

Як видно з Рис.1, інтерфейс Set, який успадкований від Collection, не містить нових методів.

Платформа Java містить три універсальних реалізації колекції Set: HashSet, TreeSet і LinkedHashSet.

HashSet зберігає елементи в хеш-таблиці, через що має найбільш високу продуктивність, але не гарантує порядок елементів;

TreeSet зберігає елементи в відсортованому порядку, через що працює істотно повільніше, ніж HashSet;

LinkedHashSet відрізняється від HashSet тим, що зберігає елементи в порядку їх вставки в колекцію. Ця колекція лише трохи повільніше HashSet.

Багато хто може задуматися, що при спробі додавання існуючого елемента в LinkedHashSet існує 2 варіанти розвитку подій. Перший варіант - існуючий об'єкт видаляється з колекції, а в кінець колекції додається (цей же) елемент. Другий варіант - колекція не змінюється і всі елементи залишаються на своїх місцях. В LinkedHashSet реалізований другий варіант. Це демонструє наступний приклад:


Set<String> stringSet = new LinkedHashSet<String>();
stringSet.add("2");
stringSet.add("1");
stringSet.add("2");
stringSet.add("4");
stringSet.add("3");
stringSet.add("5");
for( String entry : stringSet ){
	System.out.print( entry );
}
// Output: 21435

Нижче наведено кілька положень, про які необхідно пам'ятати:

< Колекції (Collections) в Java. List Колекції (Collections) в Java. Queue >

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі