我的问题是,当我们有SortedSet<T>时,HashSet<T>的需求是什么?所有HashSet的方法都可以在SortedSet中使用,而且SortedSet是有利的,因为它已经以排序的方式提供了集合!即使HashSet存在。那么它有什么用?
SortedSet<T>
HashSet<T>
wr98u20j1#
如果你不需要排序,你就不应该使用一个进行排序的类,因为这意味着你的应用程序将做比它需要做的更多的工作。(换句话说,它将使你的应用程序更快)。
eivnm1vs2#
这是关于选择正确的工具的工作。取决于你要使用你的收藏的方式。This page有一个很好的表格,详细说明了各种集合类之间的差异。下面是关于你所问的收藏品的摘录:| 收集|订购|康提?|直接访问?|查找|操纵|注意到|| --|--|--|--|--|--|--|| HashSet|无序|是的|通过键|时间复杂度O(1)|O(1)|唯一的无序集合,类似于字典,除了键和值是相同的对象。|| SortedSet|排序|没有|通过键|时间复杂度O(log n)|时间复杂度O(log n)|唯一的排序集合,类似于SortedDictionary,除了键和值是同一个对象。|注意事项:
***连续?**表示连续 * 存储 *?*效率表示效率 **操纵意味着操纵 * 效率 *
yzxexxkh3#
**HashSet<T>和SortedSet<T>**都实现了interface ISet<T>,这是一种保存唯一元素的数据结构。
interface ISet<T>
它们之间的主要区别是它们用于存储数据的底层数据结构。HashSet<T>使用哈希表,而SortedSet<T>使用红黑树,这是一种平衡二叉树。使用哈希表的HashSet<T>执行基本操作(即添加、删除、搜索)比SortedSet<T>快,因为HashSet<T>的复杂度是O(1),这意味着它将在恒定的时间段内独立于输入数据的大小进行基本操作,而SortedSet<T>的复杂度是log(N)意思取决于输入的大小它将做基本的操作对数。例如,如果你的输入数据的大小是1,000然后程序在10个步骤中做基本的操作,如果它是1,000,000该程序在20个步骤中完成基本操作。结论:如果你不需要排序元素,就使用HashSet<T>,否则就使用SortedSet<T>。这意味着除非你需要排序,否则使用HashSet<T>是优选**。
3条答案
按热度按时间wr98u20j1#
如果你不需要排序,你就不应该使用一个进行排序的类,因为这意味着你的应用程序将做比它需要做的更多的工作。(换句话说,它将使你的应用程序更快)。
eivnm1vs2#
这是关于选择正确的工具的工作。取决于你要使用你的收藏的方式。
This page有一个很好的表格,详细说明了各种集合类之间的差异。
下面是关于你所问的收藏品的摘录:
| 收集|订购|康提?|直接访问?|查找|操纵|注意到|
| --|--|--|--|--|--|--|
| HashSet|无序|是的|通过键|时间复杂度O(1)|O(1)|唯一的无序集合,类似于字典,除了键和值是相同的对象。|
| SortedSet|排序|没有|通过键|时间复杂度O(log n)|时间复杂度O(log n)|唯一的排序集合,类似于SortedDictionary,除了键和值是同一个对象。|
注意事项:
***连续?**表示连续 * 存储 *?
*效率表示效率 *
*操纵意味着操纵 * 效率 *
yzxexxkh3#
**
HashSet<T>
和SortedSet<T>
**都实现了interface ISet<T>
,这是一种保存唯一元素的数据结构。它们之间的主要区别是它们用于存储数据的底层数据结构。
HashSet<T>
使用哈希表,而SortedSet<T>
使用红黑树,这是一种平衡二叉树。使用哈希表的
HashSet<T>
执行基本操作(即添加、删除、搜索)比SortedSet<T>
快,因为HashSet<T>
的复杂度是O(1),这意味着它将在恒定的时间段内独立于输入数据的大小进行基本操作,而SortedSet<T>
的复杂度是log(N)意思取决于输入的大小它将做基本的操作对数。例如,如果你的输入数据的大小是1,000然后程序在10个步骤中做基本的操作,如果它是1,000,000该程序在20个步骤中完成基本操作。结论:如果你不需要排序元素,就使用
HashSet<T>
,否则就使用SortedSet<T>
。这意味着除非你需要排序,否则使用HashSet<T>
是优选**。