delphi - 自上而下迭代通用集合(TDictionary)

标签 delphi sorting collections delphi-xe

我有一本 TDictionary。它充满了一个广泛的循环。当循环结束时,我需要检索 10 个键(字符串)和更多分数(整数)。实现这一目标最有效的方法是什么?

在 Objective-C(Cocoa) 中,我使用以下方法:

NSArray *top_words_sorted_array = [top_words_dictionary keysSortedByValueUsingSelector:@selector(compare:)];

然后迭代新的排序数组。我怎样才能在Delphi中做到这一点?

最佳答案

与 Cocoa 代码等效的 Delphi 代码是:

type
  TScorePair = TPair<string,Integer>;
var
  ScoresArray: TArray<TScorePair>;
....
ScoresArray := Scores.ToArray;
TArray.Sort(ScoresArray,
  TComparer<TScorePair>.Construct( 
    function(const L, R: TScorePair): Integer
    begin
      Result := R.Value - L.Value;
    end
  )
);

如果您的字典非常大,那么这不是最有效的解决方案。另一方面,它可能是最快、最简单的实现方法。

关于delphi - 自上而下迭代通用集合(TDictionary),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10335457/

相关文章:

java - 关于映射和链接 HashMap 的混淆

python - Python 中的函数 "/"参数

delphi - 当 TDBGrid.DefaultDrawing 为 false 时,如何对选定的全行 TDBGrid 进行正确的所有者绘制?

delphi - 如何用更少的计算量度两个坐标之间的距离?

regex - 我该如何处理这个正则表达式问题?

python - 如何按这两个值对元组列表进行排序?

ios - 为什么有些 ios header 在没有 cdecl 的情况下被翻译成 pascal?

java - 使用比较器或合并排序哪个更适合对对象的 arrayList 进行排序?

c# - SQL Server 匹配单词短语和顺序相关性的最佳方法

java - 将两个集合(有重复项)合并为一个集合(无重复项)