2

我一直认为 any 索引应该是唯一的,但我认为至少对于 SQL Server 而言并非如此,如下面的帖子所示:

聚集索引必须是唯一的吗?

最近我不得不在一个集合中存储大量数据,并考虑使用字典,因为它是通过索引获取对象的最快集合。但是我的收藏必须允许重复的键。但实际上重复的键不会成为问题,因为返回的任何对象都会满足要求(对象并不完全唯一,但键会)。

更多的研究使我发表了以下文章:

C# Hashset 包含非唯一对象

这显示了一种使用“重复键”获取 HashSet 的方法。他的问题将是我的解决方案,但我想知道是否有任何其他方式可以让我拥有一个包含重复键的列表,这使我可以非常快速地搜索,而无需采取任何解决方法来完成这项工作。

4

1 回答 1

0

“重复的索引不会成为问题,因为它们中的任何一个都符合要求”

如果这样,您的意思是在按索引检索项目时,获取针对相同索引值存储的任何项目会让您满意,那么简单Dictionary就足够了。

例如

Dictionary<int, string> myData = new Dictionary<int, string>();

myData[1] = "foo";
myData[2] = "bar";
myData[2] = "baz"; // overwrites "bar"

var myDatum = myData[2]; // retrievs "baz" not "bar", but this is satisfactory.
于 2013-01-22T02:10:35.017 回答