我的问题是,当HashSet<T>
SortedSet<T>
时,{{1}}需要什么!所有HashSet的方法也可以在SortedSet中使用,而且SortedSet是有利的,因为它已经以排序的方式提供集合!即便如此,HashSet仍然存在。那么它有用呢?
答案 0 :(得分:67)
如果您不需要排序,则不应使用进行排序的类,因为这意味着您的应用程序将执行超出其需要的更多工作。 (换句话说,它会让你的应用更快)。
答案 1 :(得分:42)
这是关于为工作选择合适的工具。取决于您将如何使用您的收藏。
This page有一个很好的表格,详细说明了各种集合类之间的差异。
以下是该表中有关您询问的收藏品的摘录:
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)
答案 2 :(得分:3)
HashSet 和 SortedSet 都在实现数据结构集),该数据结构集包含唯一元素。
它们之间的主要区别是它们用于存储数据的基础数据结构。 HashSet使用哈希表,而SortedSet使用 red-back树,它是平衡的二叉树。
使用哈希表的HashSet进行基本操作(即添加,删除,搜索)的速度比SortedSet快,因为HashSet的复杂度为O(1),这意味着它将执行基本操作,而与输入数据的大小无关。固定时间段,而SortedSet的复杂度为log(N),这意味着它取决于输入的大小,它将对数地进行基本运算。例如,如果输入数据的大小为1,000,则程序将分10步执行基本操作;如果输入数据为1,000,000,则程序将分20步执行基本操作。
结论:如果不需要对元素进行排序,请使用HashSet ,否则请使用SortedHash。这意味着使用HashSet是首选,除非您需要排序。