c# - 定义 : What is a HashSet?

标签 c# hashset

哈希集 C# HashSet 数据结构是在 .NET Framework 3.5 中引入的。已实现成员的完整列表可在 HashSet MSDN 中找到。页面。

  1. 它用在什么地方?
  2. 为什么要使用它?

最佳答案

  1. >
    1. HashSet 包含一组对象,但其方式允许您轻松快速地确定对象是否已在集合中。它通过在内部管理数组并使用根据对象的哈希码计算的索引来存储对象来实现。 Take a look here
  2. HashSet 是一个包含唯一元素的无序集合。它具有标准的集合操作 Add、Remove、Contains,但由于它使用基于散列的实现,因此这些操作的复杂度为 O(1)。 (与列表相反,例如,包含和删除的复杂度为 O(n)。)HashSet 还提供标准集合操作,例如并集交集对称差异Take a look here

  3. 集合有不同的实现。有些通过散列元素使插入和查找操作超快。但是,这意味着添加元素的顺序丢失了。其他实现以较慢的运行时间为代价保留添加的顺序。

C# 中的 HashSet 类采用第一种方法,因此保留元素的顺序。它比常规 List 快得多。一些基本基准测试表明 HashSet 在处理主要类型(int、double、bool 等)时速度相当快。使用类对象时要快得多。所以关键是 HashSet 很快。

HashSet 的唯一问题是不能通过索引访问。要访问元素,您可以使用枚举器或使用内置函数将 HashSet 转换为 List 并遍历它。 Take a look here

关于c# - 定义 : What is a HashSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558754/

相关文章:

c# - 在 WinForms 中更新雷达图

c# - 如何为TreeListView中的每个对象设置一个图标

c# - 如何检测 IEnumerable<T> 中的 "missing"元素?

java - 比较相似词的两个字符串列表并测量出现词的频率 - JAVA

c# - LINQ 使用 ROW_NUMBER() 函数?

struct - HashSet中插入struct时的借用问题

java - 在 Java 中用数据声明 HashSet 的最清晰方法

java - 为 double 创建哈希集

java - 有没有更好的方法可以一次向集合中添加多个单词?

C# LINQ to Entities 无法识别方法