Сравнение производительности TreeSet и HashSet в Java

В этом руководстве объясняются все различия и общие черты между  TreeSet и HashSet. Действительно, это очень популярный вопрос в java-коллекциях, таких как ArrayList и Vector и HashTable и HashMap. Вероятно, самым важным различием является performance.

TreeSet vs HashSet

1)  HashSet обеспечивает стабильную производительность для основных операций, таких как: добавить, удалить, содержит и размер. HashSet быстрее, чем TreeSet и это будет очень хорошим выбором, если вам не нужно сортировать элементы, потому что HashSet не имеет системы сортировки. TreeSet  Гарантированное время log(n) для основных операций (добавитьremove  et  содержит).

2)  HashSet  не гарантирует, что элементы будут отсортированы. TreeSet гарантирует, что элементы упорядочены в порядке возрастания или определены interface Comparable или что-то еще, что вы укажете в конструкторе, определенном интерфейсом Comparator Java.

3) Производительность обхода зависит от начальной емкости и коэффициента загрузки HashSet. TreeSet не имеет параметров, влияющих на производительность курса.

4) TreeSet предлагает методы, которых нет в HashSet :  first(), last(), headSet() и tailSet().

5) HashSet использует метод  equals() для сравнения двух объектов и обнаружения повторяющихся объектов. TreeSet использует метод compareTo(). equals() возвращает true, если оба объекта равны и compareTo() должен возвращать ноль.

Сходство между TreeSet и HashSet в Java

HashSet  и  TreeSet  есть много общих вещей, давайте посмотрим:

1) Оба реализуют интерфейс java.util.Set, CE  что означает, что они не позволяют вставлять повторяющиеся элементы.

2) Эти две реализации не синхронизированы. Вы можете синхронизировать их с помощью Collections.synchronizedSet().

3) Если вам нужен отсортированный набор, быстрее добавить элементы в HashSet а затем преобразуйте их в TreeSet  чем создать TreeSet и добавляем elements.

В итоге можно сказать, что выбор использования полностью зависит от ваших потребностей.

Пример HashSet:

import java.util.HashSet; 

public class example: {

public static void main(String[] args) {

HashSet< Строка> hset = новый HashSet< Строка> ();

hset.add("1");
hset.add("3");
hset.add("2");
hset.add("5");

for(String s: hset)
System.out.println(s);
}
}

Результат:
3
2
1
5
TreeSet example:

import java.util.TreeSet; 

public class example: {

public static void main(String[] args) {

TreeSet< Строка> tset = новый TreeSet< Строка> ();

tset.add("1");
tset.add("3");
tset.add("2");
tset.add("5");

for(String s: tset)
System.out.println(s);
}
}

Result:
1
2
3
5
References:
Разница между HashSet и TreeSet в Java
Hashset vs Treeset