• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi中的hashtable

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    Hash table ,也叫做字典,是任何数据结构教材都会提到,O(0)的访问性能让它得到很广阔的应用,STL中也有map,hashmap,当然map一般是使用平衡BST来实现的,但是外部使用接口和hash table差不多。dict和list,scalar(string和numbers)组成了python,perl等脚本语言中基本数据元素。在各种程序应用中,相当大部分计算是在处理字符串,很多情况下,hash table会给字符串处理提供极大的方便。
        Delphi 自带的Contnrs中TBucketList实现了Key-value的访问接口,但它内部实现却是o(n)的数组。JEDI提供了一个TStringHashMap,这个到是真正的hashmp,我没有用过,但是按照jedi的正常品质,性能应该不错。我要推荐的是Hashes.pas,作者是Ciaran McCreesh,早就停止更新了,它提供了3个类,TIntegerHash,TObjectHash,TStringHash,从名字就可以知道它们k-v对中的value类型分别为integer,object,string。我在n个项目中都使用了它,用法很简单

uses Hashes

var
 hash:TObjectHash
begin
 
//new
 hash:
=TObjectHash.Create;

 
//add value
 hash[
'test']:= TObject.create;

 
//search
 
if hash.Exists('test') then

 
//foreach
 hash.Restart;
 
while hash.Next do
 begin
   key:
=Hash.CurrentKey;
   value:
=hash[key];
   
 
end

 
//delete
 hash.Free;
end

可以从这里下载Hashes.rar
我做了一点修改,TObjectHash['key']如果不存在,返回nil,原文件是抛出一个异常。
程序=数据结构+定义在数据结构上的运算。
delphi多是用来处理用户界面和数据库相关应用,delphi程序员很少自己创建各种数据结构,最多的是使用TStringlist和各种TQuery,TTable在内存中存放数据,或者就是定义各种record,用一个TList来存放,这中间有delphi自己的缺陷,但是Delphi 'er们是否也应该思考一下呢?


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab学习3发布时间:2022-07-18
下一篇:
matlab作业之m文件的建立与使用运行发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap