小数据量的Key-Value查找类的实现
平时写程序时经常要把一些Key与Value保存起来,但一般数据量都不大,故不想用TStringHash来做。而用TStringList来做,还要写一个"=",挺别扭!而且数据类型还有限制。自己从VCL中找了一段,感觉挺好用的,以后用它玩一玩!不过对Key值的搜索采用遍历方式,数据量大就慢了,建议采用HashTable。
注:Key与Value均不受数据类型限制!
TLookupList = class(TObject)
private
FList: TList;
public
constructor Create;
destructor Destroy; override;
procedure Add(const AKey, AValue: Variant);
procedure Clear;
function ValueOfKey(const AKey: Variant): Variant;
end;
{ TLookupList }
constructor TLookupList.Create;
begin
FList := TList.Create;
end;
destructor TLookupList.Destroy;
begin
if FList <> nil then Clear;
FList.Free;
end;
procedure TLookupList.Add(const AKey, AValue: Variant);
var
ListEntry: PLookupListEntry;
begin
New(ListEntry);
ListEntry.Key := AKey;
ListEntry.Value := AValue;
FList.Add(ListEntry);
end;
procedure TLookupList.Clear;
var
I: Integer;
begin
for I := to FList.Count - do
Dispose(PLookupListEntry(FList.Items[I]));
FList.Clear;
end;
function TLookupList.ValueOfKey(const AKey: Variant): Variant;
var
I: Integer;
begin
Result := Null;
if not VarIsNull(AKey) then
for I := to FList.Count - do
if PLookupListEntry(FList.Items[I]).Key = AKey then
begin
Result := PLookupListEntry(FList.Items[I]).Value;
Break;
end;
end;
测试
var
Demo:TLookupList;
begin
Demo:=TLookupList.Create;
try
Demo.Add('aa','bbb');
ShowMessage(Demo.ValueOfKey('aa'));
finally
Demo.Free;
end;
end;
小数据量的Key-Value查找类的实现的更多相关文章
- Win环境下Oracle小数据量数据库的物理备份
Win环境下Oracle小数据量数据库的物理备份 环境:Windows + Oracle 单实例 数据量:小于20G 重点:需要规划好备份的路径,建议备份文件和数据库文件分别存在不同的存储上. 1.开 ...
- windows 系统下,小数据量Oracle用户物理备份
环境:windows Server 2003 oracle 10g,系统间备份 目标系统创建共享文件,原系统挂载共享目录 写批处理脚本,用任务计划定时调用 Rem * 由于系统实时性要求不是很高,数据 ...
- hihocoder #1062 : 最近公共祖先·一(小数据量 map+set模拟+标记检查 *【模板】思路 )
#1062 : 最近公共祖先·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在 ...
- Java实现本地小数据量缓存尝试与实践&设计思考
话不多说先贴代码 /** * 缓存工具 */ public class ConcurrentHashMapCacheUtils{ /** * 当前缓存个数 */ public static Integ ...
- poj 1679 The Unique MST 【次小生成树+100的小数据量】
题目地址:http://poj.org/problem?id=1679 2 3 3 1 2 1 2 3 2 3 1 3 4 4 1 2 2 2 3 2 3 4 2 4 1 2 Sample Outpu ...
- poj The Settlers of Catan( 求图中的最长路 小数据量 暴力dfs搜索(递归回溯))
The Settlers of Catan Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1123 Accepted: ...
- 小数据量csv文件数据导入数据库(思路)
大致写写思路,因为sqlserver提供了可以直接导入的图形界面. 1.private static string GetConnectionString(string folderPath) // ...
- WebService - 怎样提高WebService性能 大数据量网络传输处理
直接返回DataSet对象 返回DataSet对象用Binary序列化后的字节数组 返回DataSetSurrogate对象用Binary序列化后的字节数组 返回DataSetSurrogate对象用 ...
- MySQL大数据量快速分页实现(转载)
在mysql中如果是小数据量分页我们直接使用limit x,y即可,但是如果千万数据使用这样你无法正常使用分页功能了,那么大数据量要如何构造sql查询分页呢? 般刚开始学SQL语句的时候,会这 ...
随机推荐
- SpringBoot 配置文件详解
springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...
- 九度OJ1122题-吃巧克力
题目1122:吃糖果 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2453 解决:1957 题目描述: 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力 ...
- C#语法-虚方法详解 Virtual 虚函数
虚方法 / Virtual 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- Gym101485: NWERC 2015(队内第6次训练)
A .Assigning Workstations 题意:给定N个人的工作时间和工作时长,我们可以假设有无数台工作机器,如果一台机器超过M时间未使用就会关闭,那么我们怎么安排机器的使用,使得需要开启机 ...
- JAVA代码时间SFTP文件的下载
参考文章:http://blog.csdn.net/smallerpig/article/details/50976191 SFTP文件的下载与FTP文件的下载差别较大,需要下载jsch-0.1.54 ...
- 代码规范V1.1
作业要求:[https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/993] 代码规范文档/代码规范执行记录:[https://coding. ...
- linux rpm yum 安装 软件
rpm 安装: 1.rpm包的了解: rpm 安装 升级 删除 rpm -ivh ****.rpm 安装 rpm -Uvh ****.rpm 升级 rpm -e name 删除 ...
- IIS下使用 HTTP/2
IIS 使用 HTTP/2 什么叫HTTP/2? HTTP 2.0即超文本传输协议 2.0,是下一代HTTP协议.是由互联网工程任务组(IETF)的Hypertext Transfer Protoco ...
- ubuntu软件管理
https://www.cnblogs.com/forward/archive/2012/01/10/2318483.html 一.Ubuntu中软件安装方法1.APT方式(联网安装, 需要联网下载软 ...
- URL编码表(收集到的,为了方便查看)
URL编码表