我有一个小样本。
//Class
public class GetEntity
{
public string name1 { get; set; }
public string name2 { get; set; }
public GetEntity() { }
}
和
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();
}
}
代码工作正常。通过Dictionary和List完成任务。但我想知道何时使用HashSet<> ,词典<>或列表<>。只有性能问题或任何其他我不理解的事情。谢谢。
答案 0 :(得分:5)
i want to know when we use HashSet<> , Dictionary<> or <List>
他们都有不同的目的,并在不同的场景中使用
HashSet的
当您想拥有具有唯一元素的集合时使用。 HashSet存储唯一元素的列表,不允许重复元素。
字典
当您想要对唯一键具有值时使用。 Dictionary中的每个元素都有两个部分:一个(唯一的)键和一个值。您可以在其中存储唯一键(就像Hashset一样),此外您还可以存储针对该唯一键的值。
列表
只是一个简单的元素集合。您可以在其中包含重复项。
答案 1 :(得分:2)
Set不包含重复值。
答案 2 :(得分:1)
我自己不是C#家伙但是跟随应该是差异。
如果我错了,请纠正我
HashSet只会采用唯一值,值可以通过索引随机访问,在恒定时间内工作
Dictionary将采用键值对,值可以通过键名随机访问,键名不能重复。这也是一个非常快的DS。在恒定时间工作
列表将采用n值,即使它们不是唯一的,也必须按顺序访问值。在最坏的情况下,插入和检索的时间复杂度为o(n)
答案 3 :(得分:0)
它们都是被称为集合,通常位于命名空间 System.Collections.Generic 中。
何时使用某种数据结构基本上需要了解它们支持的操作。对于 HashSet ,它基本上是数学中的 Set ,并且支持高效的添加,删除,并快速判断元素是否存在< / b>在集合中。鉴于它是一个集合, Hashset 中的元素必须唯一。
对于 Dictionary ,它基本上是一种映射结构,即一组键值对。 Dictionary 提供有效的使用给定键的键值对查询以及添加/删除键值对。
List 是一个有序元素集合。与Hashsets不同,判断列表中元素的存在是低效。与字典不同,内部数据结构不是键值对,而是简单对象。另一个区别是您可以使用索引(如list [3])来有效地访问列表中的元素。 (虽然对于LinkedList来说不是这样)