Більшість мов програмування підтримують масиви. Це структура даних, яка використовується для зберігання декількох елементів одного типу даних. Якщо для шести елементів оголошено масив, його не можна використовувати для зберігання десяти елементів. Тому масиви не є динамічними і не можуть змінювати розмір масиву, коли він оголошується. Мови програмування, такі як Java, підтримують колекції, які використовуються для динамічного зберігання даних. Колекції підтримують такі операції, як додавання елементів та видалення елементів. В ієрархії колекції є ряд інтерфейсів та класів. Базовим інтерфейсом є інтерфейс колекції. Set - це інтерфейс, який розширює інтерфейс Collection. Це не дозволяє дублювати. TreeSet і HashSet - два класи в ієрархії колекції і обидва реалізують інтерфейс Set. TreeSet - клас, який реалізує інтерфейс Set, і він використовується для зберігання унікальних елементів у порядку зростання. HashSet - клас, який реалізує інтерфейс Set, і він використовується для зберігання унікальних елементів за допомогою механізму Hashing. The ключова різниця між TreeSet і HashSet це те, що TreeSet зберігає елементи у порядку зростання, тоді як HashSet не зберігає елементи у порядку зростання. І TreeSet, і HashSet зберігають лише унікальні елементи.
1. Огляд та ключові відмінності
2. Що таке TreeSet
3. Що таке HashSet
4. Подібність між TreeSet і HashSet
5. Порівняльне порівняння - TreeSet vs HashSet у табличній формі
6. Підсумок
Клас TreeSet реалізує інтерфейс NavigableSet. Інтерфейс NavigableSet розширює інтерфейси SortedSet, Set, Collection та Iterable в ієрархічному порядку. TreeSet завжди підтримує порядку зростання. Якщо елементи були вставлені в порядку B, A, C, вони зберігатимуться як A, B, C. Методи, такі як add (), remove (), можуть використовуватися з об'єктом TreeSet. Метод додавання може бути використаний для додавання елемента. Метод видалення використовується для видалення елемента з колекції. Це деякі методи, які можна використовувати з TreeSet.
Рисунок 01: Програма з TreeSet
Відповідно до вищевказаної програми створюється об’єкт типу TreeSet. Елементи рядкових даних додаються до цього об'єкта за допомогою методу add. Порядок вставлених даних - це A, D, A, B, C, D. За допомогою ітератора збережені значення друкуються на екран. Вихідні дані A, B, C, D. Незважаючи на те, що є дві літери A і дві букви D, на виході відображається одна A і одна D кожна. Тому TreeSet зберігає унікальні елементи. Немає конкретного порядку вставки, але, спостерігаючи за результатами, видно, що TreeSet підтримує порядок зростання елементів.
Клас HashSet розширює клас AbstractSet, який реалізує інтерфейс Set. Інтерфейс Set успадковує інтерфейси Collection та Iterable в ієрархічному порядку. У HashSet немає гарантії того, що елементи будуть підтримувати порядок зростання та вставлений порядок. Якщо вкладене замовлення було A, B, C, значення можуть зберігатися як C, A, B. Порядок зберігання може також бути A, B, C, але немає гарантії, що введений порядок або порядку зростання буде збережено.
Малюнок 02: Програма з HashSet
Відповідно до вищевказаної програми створюється об’єкт типу HashSet. Елементи рядкових даних додаються до цього об'єкта за допомогою методу add. Порядок вставлених даних - L, R, M, M, R, L. За допомогою ітератора збережені значення друкуються на екран. Вихід - R L M. Незважаючи на те, що з кожного букви є дві літери L, R і M, відображається лише одна літера з кожної. Тому HashSet зберігає унікальні елементи. Під час спостереження за результатами видно, що немає порядку зростання або вставлений порядок підтримується.
TreeSet vs HashSet | |
TreeSet - клас в ієрархії колекції, який використовується для зберігання унікальних елементів у порядку зростання. | HashSet - клас в ієрархії колекції, який використовується для зберігання унікальних елементів за допомогою механізму Hashing. |
Зберігання елементів | |
TreeSet зберігає елементи у порядку зростання. | HashSet не зберігає елементи у порядку зростання. |
У програмуванні потрібно динамічно зберігати елементи даних. Мови програмування, такі як Java, підтримують колекції для досягнення цього завдання. В ієрархії колекції є ряд інтерфейсів та класів. TreeSet і HashSet - два класи в ієрархії колекцій. Обидва реалізують інтерфейс Set. TreeSet - клас, який реалізує інтерфейс Set, і він використовується для зберігання унікальних елементів у порядку зростання. HashSet - клас, який реалізує інтерфейс Set, і він використовується для зберігання унікальних елементів за допомогою механізму Hashing. Різниця між TreeSet і HashSet полягає в тому, що TreeSet зберігає елементи у порядку зростання, тоді як HashSet не зберігає елементи у порядку зростання. У цій статті розглянуто різницю між TreeSet і HashSet.
1. "TreeSet на Java - javatpoint." JavaPoint. Доступний тут
2. "HashSet на Java - javatpoint." JavaPoint . Доступний тут