我需要维护字符串和整数之间的对应关系,然后查找字符串值并返回整数。什么是存储此信息的最佳结构,以满足以下要求:以字符串快速查找的字符串/整数对的最佳存储空间?
速度和内存大小依次是重要的。
我不想重新发明轮子并编写我自己的分拣程序。对Sort(CompareFunction)的调用当然是好的。
条件:
的整数,但不保证连续的,也不是有一个“开始值”如0或1
数据对数可以从100变化到100000
数据全部读入开头,没有后续的添加/删除/修改
FWIW字符串是Outlook(MAPI?)用于标识条目的十六进制条目ID。例如:00000000FE42AA0A18C71A10E8850B651C24000003000000040000000000000018000000000000001E7FDF4152B0E944BA66DFBF2C6A6416E4F52000487F22
有这么多的选项(TStringList中(使用对象或名称/值对),TObjectList,TDictionary,...),我最好请教第一...
我读How can I search faster for name/value pairs in a Delphi TStringList?其中建议TDictionary字符串/字符串对,建议TStringlist对象的字符串/整数,但排序完成整数。
我想说一个记录,例如'type TNamedInt = record Name:String;值:整数; end;'然后是它的一个数组'type TNamedInts = TNamedInt数组,然后用你自己的方法通过各种方法来查找/操作它,比如'Lookup(Name:String):Integer;' – 2013-04-22 16:50:02
@JerryDodge很容易说像这样的事情,如果你实际上没有提供'Lookup'的实现。更重要的是,您选择用来使'Lookup'高效的算法可能会很好地影响底层的数据结构。字典是一个非常好的例子。 – 2013-04-22 17:07:10
@David的确,这就是为什么我离开的原因是以“我会说”开始而不是回答,好像在说“这就是它”。 – 2013-04-22 17:08:22