C# 何时使用HashSet<&燃气轮机;

C# 何时使用HashSet<&燃气轮机;,c#,asp.net,C#,Asp.net,我有一个小样品 //Class public class GetEntity { public string name1 { get; set; } public string name2 { get; set; } public GetEntity() { } } 以及: 代码工作正常。同样的任务是通过字典和列表完成的。但我想知道我们何时使用哈希集、字典或列表。是否只有性能问题或任何其他我不理解的事情。谢谢。我自己不是C#人,但以下应该是区别 如果我错了,请纠正我 Ha

我有一个小样品

//Class
public class GetEntity
 {
   public string name1 { get; set; }
   public string name2 { get; set; }
   public GetEntity() { }
 }
以及:

代码工作正常。同样的任务是通过字典和列表完成的。但我想知道我们何时使用哈希集、字典或列表。是否只有性能问题或任何其他我不理解的事情。谢谢。

我自己不是C#人,但以下应该是区别

如果我错了,请纠正我

HashSet只接受唯一的值,值可以通过索引随机访问,在固定时间内工作

字典将采取键值对,值可以通过键名随机访问,键名不能重复。这也是一个非常快的DS。工作时间固定

列表将采用n个值,即使它们不是唯一的,也必须按顺序访问这些值。在最坏的情况下,插入和检索的时间复杂度为o(n)

我自己不是一个C#guy,但以下应该是区别

如果我错了,请纠正我

HashSet只接受唯一的值,值可以通过索引随机访问,在固定时间内工作

字典将采取键值对,值可以通过键名随机访问,键名不能重复。这也是一个非常快的DS。工作时间固定


列表将采用n个值,即使它们不是唯一的,也必须按顺序访问这些值。在最坏的情况下,插入和检索的时间复杂度为o(n)

我想知道我们何时使用HashSet、Dictionary或

它们都有不同的用途,用于不同的场景

哈希集

当您想要拥有具有唯一元素的集合时使用。HashSet存储唯一元素的列表,不允许重复

字典

当您希望对唯一键具有值时使用。字典中的每个元素都有两部分:一个(唯一)键和一个值。您可以在其中存储一个唯一的键(就像Hashset一样),此外,您还可以针对该唯一键存储一个值

名单


只是一个简单的元素集合。您可以在其中包含重复项。

我想知道我们何时使用HashSet、Dictionary或

它们都有不同的用途,用于不同的场景

哈希集

当您想要拥有具有唯一元素的集合时使用。HashSet存储唯一元素的列表,不允许重复

字典

当您希望对唯一键具有值时使用。字典中的每个元素都有两部分:一个(唯一)键和一个值。您可以在其中存储一个唯一的键(就像Hashset一样),此外,您还可以针对该唯一键存储一个值

名单


只是一个简单的元素集合。您可以在其中包含重复项。

集合不包含重复值。

集合不包含重复值。

它们都称为集合,通常位于命名空间System.collections.Generic中

当使用某个数据结构时,基本上需要了解它们支持哪些操作。对于HashSet,它基本上是数学上的一个集合,支持高效的添加、删除和快速判断集合中是否存在元素。给定它是一个集合,元素在哈希集合中必须是唯一的

对于字典,它基本上是一个映射结构,即一组键值对。字典提供了对具有给定键的键值对的高效查询,还提供了对键值对的添加/删除


列表是元素的有序集合。与哈希集不同,判断列表中元素的存在效率很低。与字典不同,内部数据结构不是键值对,而是简单的对象。另一个区别是,您可以使用索引(如列表[3])有效地访问列表中的元素。(虽然LinkedList不是这样)

它们都称为集合,通常位于命名空间System.collections.Generic中

当使用某个数据结构时,基本上需要了解它们支持哪些操作。对于HashSet,它基本上是数学上的一个集合,支持高效的添加、删除和快速判断集合中是否存在元素。给定它是一个集合,元素在哈希集合中必须是唯一的

对于字典,它基本上是一个映射结构,即一组键值对。字典提供了对具有给定键的键值对的高效查询,还提供了对键值对的添加/删除

列表是元素的有序集合。与哈希集不同,判断列表中元素的存在效率很低。与字典不同,内部数据结构不是键值对,而是简单的对象。另一个区别是,您可以使用索引(如列表[3])有效地访问列表中的元素。(虽然LinkedList不是这样)

有用的阅读-有用的阅读-
public void GetHash()
   {
     HashSet objHash = new HashSet();
     GetEntity obj = new GetEntity();
     obj.name1 = "Ram";
     obj.name2 = "Shyam";
     objHash.Add(obj);
     foreach (GetEntity objEntity in objHash)
      {
        Label2.Text = objEntity.name1.ToString() + objEntity.name2.ToString();
      }

   }