Delphi7:HashMap 键值对存储详解
在 Delphi 7 中,虽然没有名为 “HashMap” 的原生泛型类(泛型集合是 Delphi 2009 之后引入的),但有多种有效方法可以实现类似功能的键值对存储。以下是主要解决方案:
📌 推荐方案:使用 TStringList 或 THashedStringList (最接近 HashMap)
适用场景: 键为字符串,值为字符串或对象。
uses Classes;
var
HashMap: THashedStringList; // 或者 TStringList
begin
HashMap := THashedStringList.Create; // 哈希加速查找
try
// 添加键值对 (字符串)
HashMap.Values['name'] := 'Alice'; // 相当于 HashMap.put("name", "Alice")
HashMap.Values['age'] := '30';
// 添加复杂对象
HashMap.AddObject('user', TUser.Create);
// 取值
ShowMessage(HashMap.Values['name']); // 输出 "Alice"
// 取对象
if HashMap.IndexOf('user') <> -1 then
begin
User := TUser(HashMap.Objects[HashMap.IndexOf('user')]);
User.DoSomething;
end;
// 删除键
HashMap.Delete(HashMap.IndexOfName('age'));
finally
HashMap.Free; // 自动释放所有关联的对象
end;
end;
✅ 优点:
- 原生支持,无需外部库
THashedStringList查找效率高(O(1) 平均复杂度)- 自动管理对象生命周期(释放时自动销毁
Objects中的实例)
❌ 限制:
- 键必须是字符串
- 非字符串值需手动转换(如
StrToInt)

最低0.47元/天 解锁文章
1842

被折叠的 条评论
为什么被折叠?



