TDictionary在delphi中的奇怪行为
发布时间:2020-12-15 09:30:42 所属栏目:大数据 来源:网络整理
导读:参见英文答案 Delphi Dictionary and ordering data????????????????????????????????????1个 我有以下问题: 我正在用一些值填充一个字典,并希望按照我填充它们的相同顺序将它们恢复. 不知怎的,它似乎没有用,当我遍历项目时,它们按非逻辑顺序(IMDO)排序. 运
参见英文答案 >
Delphi Dictionary and ordering data????????????????????????????????????1个
我有以下问题: 我正在用一些值填充一个字典,并希望按照我填充它们的相同顺序将它们恢复. 不知怎的,它似乎没有用,当我遍历项目时,它们按非逻辑顺序(IMDO)排序. 运行以下程序后: program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils,System.Generics.Collections; var Dictionary: TDictionary<LongWord,string>; aPair: TPair<LongWord,string>; begin Dictionary := TDictionary<LongWord,string>.Create; Dictionary.add(1,'First Item'); Dictionary.add(2,'Second Item'); Dictionary.add(3,'Third Item'); Dictionary.add(4,'Forth Item'); Dictionary.add(5,'Fifth Item'); Dictionary.add($FFFFFFFF,'Longword Item'); for aPair in Dictionary do writeln(aPair.Value); readln; end. 我得到了以下结果: Forth Item Longword Item First Item Third Item Second Item Fifth Item 难道我做错了什么? 在XE5和Rad Studio Berlin上测试,结果相同. 感谢帮助. 解决方法
Delphi字典类是无序的.它的行为与设计一致.如果您希望维护订单,则需要使用有序数据结构.例如,数组或列表.
如果您希望有序访问以及O(1)查找,那么您需要串联维护两个集合.一个用于有序访问的数组或列表,以及用于O(1)查找的字典串联.或者,或者,找到提供有序字典实现的库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |