0

我有一组由名称和相关内容组成的数据。因此,我会选择HashTableDictionary存储这些物品。

我需要用两个优先级对这些数据进行排序。首先,它们应该按字母顺序排列,然后一些项目应该按特定顺序放在开头。

如果字母顺序是我唯一的要求,我会使用SortedDictionary. 该字典根据键自动对元素进行排序。

我正在寻找的是一个允许我做的课程:

  1. 以随机顺序添加元素
  2. 按字母顺序对所有元素进行排序
  3. 将元素移动(或删除和插入)到开头(或更通用:在我想要的任何地方)。
4

3 回答 3

1

没有内置集合可以满足您的需要,但您可以相对轻松地构建自己的集合:

  • 写一个实现IDictionary<TKey,TValue>
  • 把 aDictionary<TKey,TValue> dict和 aList<TKey> keys放在里面
  • 向 中添加元素时dict,还要将其键添加到keys
  • 当请求迭代时,迭代keys然后在dict

如果您的集合以这种方式组织,您将能够独立于字典条目重新排序键。由于在更改字典的操作中应该进行双重“簿记”,因此您在实施时需要小心。除此之外,解决方案应该相对简单。

于 2012-12-06T10:41:16.820 回答
1

如果此数据的名称可以重复,您没有提供信息。一般来说,我认为您可以使用不同的方式来保存这些数据。您应该记住,字典的本质是保存键是唯一的键/值数据。元素的顺序不是字典的本质。在我看来,这更重要。因此,您可以尝试将 Dictionary 与 Linq to Objects 混合使用。但也许尝试使用通用

    List< KeyValuePair< TKey, TValue>>.
于 2012-12-06T10:41:40.627 回答
1

为什么不看SortedList<TKey, TValue>

那应该有适当的功能让你做你想做的事,而且排序很快!

于 2012-12-06T11:48:35.557 回答