Delphi的哈希表(一)
哈希表是通过哈希值来访问的,通过一定的内存浪费获取检索速度,在检索项时是不需要逐一检索。在编程中有一定的好处。
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} uses
IniFiles; //THashedStringList 来自 IniFiles 单元
var
Hash: THashedStringList; { THashedStringList 继承自 TStringList, 只是覆盖了 IndexOf、IndexOfName 两个方法以增加效率;
如果注重效率而不需要太多功能, 可以使用 TStringHash, 它是直接从 TObject 继承的数组链表 } //建立哈希表
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
Hash := THashedStringList.Create; for i := to do
begin
Hash.Add(Chr(i) + '=' + IntToStr(i));
end; ShowMessage(Hash.Text);
{
构建结果:
a=97
b=98
c=99
d=100
e=101
f=102
g=103
h=104
i=105
j=106
k=107
l=108
m=109
n=110
o=111
p=112
q=113
r=114
s=115
t=116
u=117
v=118
w=119
x=120
y=121
z=122
}
end; //检索哈希表
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i := Hash.IndexOf('z=122');
ShowMessage(IntToStr(i)); // i := Hash.IndexOfName('z');
ShowMessage(IntToStr(i)); //
end; //基本操作
procedure TForm1.Button2Click(Sender: TObject);
begin
Hash.Values['a'] := ''; //赋值
Hash.ValueFromIndex[] := ''; //用索引赋值 ShowMessage(Hash.Values['z']); //, 取值
ShowMessage(Hash.ValueFromIndex[]);//, 用索引取值 {其他操作参加 TStringList}
end; procedure TForm1.FormDestroy(Sender: TObject);
begin
Hash.Free;
end; end.
该哈希表的应用,可以缩短计算时间3-4倍。
Delphi的哈希表(一)的更多相关文章
- Delphi 中的哈希表: THashedStringList
转自万一博客 Delphi 中的哈希表: THashedStringList unit Unit1; interface uses Windows, Messages, SysUtils, Var ...
- [转]:Delphi 中的哈希表(1): THashedStringList
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- Delphi 中的哈希表(二)—— TStringHash
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- [PHP内核探索]PHP中的哈希表
在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...
- Java 哈希表运用-LeetCode 1 Two Sum
Given an array of integers, find two numbers such that they add up to a specific target number. The ...
- ELF Format 笔记(十五)—— 符号哈希表
ilocker:关注 Android 安全(新手) QQ: 2597294287 符号哈希表用于支援符号表的访问,能够提高符号搜索速度. 下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范. ...
- Java基础知识笔记(一:修饰词、向量、哈希表)
一.Java语言的特点(养成经常查看Java在线帮助文档的习惯) (1)简单性:Java语言是在C和C++计算机语言的基础上进行简化和改进的一种新型计算机语言.它去掉了C和C++最难正确应用的指针和最 ...
- 什么叫哈希表(Hash Table)
散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的数组叫做散列表. - 数据结构 ...
- 【哈希表】CodeVs1230元素查找
一.写在前面 哈希表(Hash Table),又称散列表,是一种可以快速处理插入和查询操作的数据结构.哈希表体现着函数映射的思想,它将数据与其存储位置通过某种函数联系起来,其在查询时的高效性也体现在这 ...
随机推荐
- hdu 4268 multiset+贪心
Alice和Bob有n个长方形,有长度和宽度,一个矩形可以覆盖另一个矩形的条件的是,本身长度大于等于另一个矩形,且宽度大于等于另一个矩形,矩形不可旋转,问你Alice最多能覆盖Bob的几个矩形? /* ...
- hdu 4024 二分
转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2653003.html 一种是直接根据公式计算的,另外一种是二分算出来的.两种方法速度 ...
- hdu 1281 二分图匹配
题目:在保证尽量多的“车”的前提下,棋盘里有些格子是可以避开的,也就是说,不在这些格子上放车,也可以保证尽量多的“车”被放下.但是某些格子若不放子,就 无法保证放尽量多的“车”,这样的格子被称做重要点 ...
- 关于phpstudy安装的问题
1.最常见的就是80端口冲突.如果是安装在服务器的话,有些服务器已经默认安装了iis,所以会有冲突.关闭iis即可. 2.明明装了vc9运行库,但错误还是不行.如果你是整个项目copy过来的,可能就会 ...
- Oracle表空间管理
oracle表空间相关常用命令小结: 1.ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE; //修改表空间数据文件类型 2.ALT ...
- javascript优化--05模式(函数)
回调函数模式: 基本例子: var findNodes = function (callback) { ...................... if (typeof callback !== ' ...
- hadoop2.2.0部署
hadoop2.2.0部署 下载安装包 hadoop-2.2.0-cdh5.0.0-beta-1.tar.gz 解压 tar zxvf hadoop-2.2.0-cdh5.0.0-beta-1.tar ...
- Fengshui-[SZU_B40]
Description Fengshui is an ancient subject in Chinese tradition. Someone considers it as science and ...
- KMP算法(转载)
转载http://blog.csdn.net/yutianzuijin/article/details/11954939 kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法.不过由于其难以 ...
- win7 无法复制粘贴
win7 无法复制粘贴解决办法 在开始-运行里输入以下命令 regsvr32 shdocvw.dll ,确定,接着出现一个消息框,确定 regsvr32 oleaut32.dll,确定,接着出现一个 ...