我有一组由名称和相关内容组成的数据。因此,我会选择HashTable
或Dictionary
存储这些物品。
我需要用两个优先级对这些数据进行排序。首先,它们应该按字母顺序排列,然后一些项目应该按特定顺序放在开头。
如果字母顺序是我唯一的要求,我会使用SortedDictionary
. 该字典根据键自动对元素进行排序。
我正在寻找的是一个允许我做的课程:
- 以随机顺序添加元素
- 按字母顺序对所有元素进行排序
- 将元素移动(或删除和插入)到开头(或更通用:在我想要的任何地方)。
我有一组由名称和相关内容组成的数据。因此,我会选择HashTable
或Dictionary
存储这些物品。
我需要用两个优先级对这些数据进行排序。首先,它们应该按字母顺序排列,然后一些项目应该按特定顺序放在开头。
如果字母顺序是我唯一的要求,我会使用SortedDictionary
. 该字典根据键自动对元素进行排序。
我正在寻找的是一个允许我做的课程:
没有内置集合可以满足您的需要,但您可以相对轻松地构建自己的集合:
IDictionary<TKey,TValue>
Dictionary<TKey,TValue> dict
和 aList<TKey> keys
放在里面dict
,还要将其键添加到keys
keys
然后在dict
如果您的集合以这种方式组织,您将能够独立于字典条目重新排序键。由于在更改字典的操作中应该进行双重“簿记”,因此您在实施时需要小心。除此之外,解决方案应该相对简单。
如果此数据的名称可以重复,您没有提供信息。一般来说,我认为您可以使用不同的方式来保存这些数据。您应该记住,字典的本质是保存键是唯一的键/值数据。元素的顺序不是字典的本质。在我看来,这更重要。因此,您可以尝试将 Dictionary 与 Linq to Objects 混合使用。但也许尝试使用通用
List< KeyValuePair< TKey, TValue>>.
为什么不看SortedList<TKey, TValue>
?
那应该有适当的功能让你做你想做的事,而且排序很快!