Подтвердить что ты не робот

SortedSet <T> vs HashSet <T>

Мой вопрос в том, что нам нужна HashSet<T>, когда у нас есть SortedSet<T>! Все методы HashSet также доступны в SortedSet, причем SortedSet выгодно, поскольку он обеспечивает сбор уже отсортированным образом! Даже тогда присутствует HashSet. Для чего это полезно тогда?

4b9b3361

Ответ 1

Если вам не нужна сортировка, вы не должны использовать класс, который выполняет сортировку, потому что это означает, что ваше приложение будет выполнять больше работы, чем нужно. (Это сделает ваше приложение быстрее, другими словами).

Ответ 2

Речь идет о выборе правильного инструмента для работы. Зависит от того, как вы собираетесь использовать свою коллекцию.

На этой странице есть таблица, в которой подробно описаны различия между различными классами коллекции.

Ниже приведена выдержка из этой таблицы о коллекциях, о которых вы спрашиваете:

Collection  Ordering    Contiguous Storage? Direct Access?  Lookup Efficiency   Manipulate Efficiency
SortedSet   Sorted          No              Via Key             Key:O(log n)            O(log n)            
HashSet     Unordered       Yes             Via Key             Key:O(1)                O(1)

Ответ 3

И HashSet, и SortedSet реализуют набор структур данных, который представляет собой структуру данных, содержащую уникальные элементы.

Основное различие между ними заключается в базовой структуре данных, которую они используют для хранения данных. HashSet использует хеш-таблицу, в то время как SortedSet использует красно-черное дерево, которое представляет собой сбалансированное двоичное дерево.

HashSet, который использует хеш-таблицу, выполняет основные операции (т.е. Add, Remove, Search) быстрее, чем SortedSet, поскольку сложность HashSet равна O (1), что означает, что он будет выполнять основные операции независимо от размера входных данных в постоянный период времени. Время, в то время как сложность SortedSet равна log (N), означает, что от размера входных данных он будет выполнять логарифмические основные операции. например, если размер ваших входных данных равен 1000, тогда программа выполняет основные операции в 10 шагов, а если она составляет 1 000 000, программа выполняет основные операции в 20 шагов.

Вывод: используйте HashSet, если вам не нужно сортировать элементы, в противном случае используйте SortedHash. Это означает, что использование HashSet предпочтительнее, если вам не нужна сортировка.