【问题标题】:How to sort/select top values from Hashtable?如何从哈希表中排序/选择最高值?
【发布时间】:2021-10-24 20:56:33
【问题描述】:

我有一个Hashtable,内容如下:

jak: 1
dsf: 1
usd: 1
idb: 1
bla: 3
sdd: 1
asd: 2
bsd: 1

我想按价值选择前 10 对。在这个例子中,它会是这样的:

bla: 3
asd: 2

等等。我该怎么做?

【问题讨论】:

  • 如果您获得前 10 名,为什么结果中没有所有输入值?
  • @gunr2171 我还有很多双,我只是不想把它们都放进去,而且我还需要它们排序。
  • 你为什么使用哈希表而不是字典?因为字典是通用的,您可以使用 Linq 轻松做到这一点。
  • @gunr2171 我会试试的,谢谢!
  • 为了使示例与所提出的问题一致,您可能应该像这样编辑问题:“我想选择顶部 2 对...”

标签: c# sorting hashtable


【解决方案1】:

如果您将代码交换为使用字典,它将如下所示:

var top10 = dict.OrderByDescending(kvp => kvp.Value).Take(10);

您可以枚举top10,这将是一个KeyValuePair序列,并打印它们的Key和Value属性

顺便说一句,您仍然可以使用哈希表来执行此操作(gunr 的评论有点暗示您不能使用 LINQ),并且您可以让 LINQ 转换所有条目以使其更易于使用:

hashtable.Cast<DictionaryEntry>().OrderByDescending(de => (int)de.Value).Take(10)

【讨论】:

  • Hashtable 和 Dictionary 哪个更快?
  • 我不会使用 Hashtable 进行新开发。相对而言,在任何一种情况下,这都会相当慢,因为您可能会分类很多要丢弃的物品。不过,替代方案相当激烈。如果您有特定的性能要求,请将其作为询问的一部分进行说明。总而言之,我认为您必须得到一个很长的列表才能成为问题。如果您的问题是关于字典与哈希表作为数据存储设备的原始性能,请参阅stackoverflow.com/questions/1089132/…
猜你喜欢
  • 2015-03-06
  • 2023-03-27
  • 1970-01-01
  • 2014-07-25
  • 2010-10-20
  • 2011-04-04
  • 1970-01-01
  • 2018-04-30
  • 2014-08-03
相关资源
最近更新 更多