Когато сравнявате Set с други структури от данни, основният фокус на разговора е върху обработката на елементите и реда, в който се вмъкват. Java класът HashSet е имплементация на интерфейса Set, който използва хеш таблица като поддържаща структура от данни. Тази хеш таблица е представена от екземпляр на класа HashMap. В границите на този клас стойността null е приемлива. В случая на TreeSet подреждането на елементите се поддържа от набор, използвайки естествения им ред, независимо дали е предоставен изричен компаратор или не. Както показва името, TreeSet е реализация на интерфейса SortedSet, който използва дървото като механизъм за съхранение. Освен това класът предлага производителност, която е постоянна във времето за основни операции като добавяне, премахване, проверка дали съдържа нещо и измерване на размера му.

„Курсът за разработка на Java“ може да бъде полезен за по-добро разбиране на тази тема.

1. Скорост и вътрешно внедряване

HashSet гарантира, че средното време, необходимо за извършване на типични операции като намиране, вмъкване и изтриване на данни, остава стабилно. HashSet е много по-ефективен от TreeSet. Внедряването на HashSet използва хеш-таблицата. Времевата сложност на търсене, вмъкване и изтриване на елементи в TreeSet е по-висока от тази на HashSet, която стои на O. (Log n). Данните в TreeSet обаче са последователно организирани. Налични са и методи като Higher () (който връща елемента с най-ниска височина), floor (), strop () и други. В допълнение, изпълнението на тези операции в TreeSet е много по-бързо (O (Log n)), докато HashSet не предоставя тази функция. За да се създаде TreeSet, се използва адаптивно двоично дърво за търсене (червено-черно дърво). TreeSet се поддържа от TreeMap на езика за програмиране Java.

2. Поръчване

Членовете на HashSet не продължават в определен ред, когато се гледат отвън. Java компараторите Comparable и Comparator се използват за определяне на реда, в който се съхраняват обектите, които TreeSet държи. Елементите, включени в TreeSet, са подредени възходящо по подразбиране. Когато работите с подреден комплект, имате достъп до редица различни методи. Някои от тях са first(), last(), headSet(), tailSet() и други.

3. Нулев обект

В HashSet е добре да има нулеви обекти. За да предотвратите java.lang. TreeSet не поддържа нулеви обекти и ще хвърли NullPointerException в отговор на откриването на такива обекти. Това е така, защото TreeSet се придържа към стандарта, дефиниран от NullPointerException. NullPointerException. „Курсът за разработка на java backend“ може да подобри вашите умения.

4. Сравнение

Класът HashSet използва метода equals() за сравняване на компонентите на Set, за да идентифицира екземпляри на дублирани данни. Функцията compareTo() на обекта TreeSet постига същия резултат като своя аналог. В случай, че equals() и compareTo() върнат различни резултати, това означава, че интерфейсът Set е бил нарушен; в този случай дубликати ще бъдат разрешени в реализации като TreeSet. За да бъдем по-конкретни, ако са дадени два обекта, които са еднакви, методът equals () трябва да върне true, но методът compareTo() трябва да върне нула.

Вашите маниаци на данни несъмнено се чудят, след като прочетоха за разликите между двете колекции, дали би било подходящо да използвате TreeSet, а не HashSet. Нуждаем се от уникални елементи, не само уникални, но уникални елементи, които са сортирани. TreeSet винаги връща сортиран списък във възходящ ред.

  1. TreeSet превъзхожда HashSet по отношение на местоположението.
  2. TreeSet разпределя памет така, че съседните елементи да са близо един до друг, независимо от ключовете, с които са свързани, докато HashSet ги разпределя на случаен принцип.
  3. Основният алгоритъм на дървото Red-Black на TreeSet е отговорен за организацията на данните. TreeSet е полезен, когато човек иска често да извършва операции за четене/запис.
  4. Тези две структури от данни са подобни една на друга, като последната е LinkedHashSet. Той има същата времева сложност като HashSet и запазва реда на вмъкване (обърнете внимание, че това не е сортиран ред, а редът, в който се вмъкват елементите).

Таксите за курс за разработчици на Java могат да достигнат до 50 хиляди INR.