我需要维护字符串和整数之间的对应关系,然后查找字符串值并返回整数。哪种最佳结构可以满足以下要求:
速度和内存大小很重要,按顺序排列。
我不想重新发明轮子并编写自己的排序程序。当然,调用Sort(CompareFunction)就可以了。
条件:
整数不能保证是连续的,也没有像0或1这样的“起始值”
数据对的数量可以从100到100000个不等
所有数据都在开始时读入,没有后续添加/删除/修改
FWIW,字符串是Outlook(MAPI?)用于标识条目的十六进制条目ID。示例:00000000FE42AA0A18C71A10E8850B651C24000003000000040000000000000018000000000000001E7FDF4152B0E944BA66DFBF2C6A6416E4F52000487F22
有很多选项可供选择(TStringList(带对象或名称/值对),TObjectList,TDictionary等),我最好先寻求建议...
我已阅读如何在Delphi TStringList中更快地搜索名称/值对?,建议使用TDictionary进行字符串/字符串对,以及在Delphi 2007中排序多维数组,建议使用TStringlist对象进行字符串/整数对,但其中排序是在整数上完成的。
type TNamedInt = record Name: String; Value: Integer; end;
的记录,然后再创建一个该类型的数组type TNamedInts = Array of TNamedInt
,最后通过各种方法(例如Lookup(Name: String): Integer;
)来查找和操作它。 - Jerry Dodge