小数据量的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语句的时候,会这 ...
随机推荐
- "@P0"附近有语法错误解释及定位修复
解释: "@P0" 指的是sql语句被预编译之后,其所对应的占位符的相对顺序位置,通俗的讲,就是它代表第几个占位符的位置,其中的0,并不是固定的,如果将定位符看做数组的话,这里的数 ...
- 实时获取input输入框中的值
//输入框正在输入时 $("#ipt").on('input',function(){ if(!($('#ipt').val()=='')){ $(".cancle_ic ...
- Prism for WPF
Prism for WPF Prism for WPF初探(构建简单的模块化开发框架) 先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to ...
- StackExchange.Redis和Log4Net构建日志
利用StackExchange.Redis和Log4Net构建日志队列 简介:本文是一个简单的demo用于展示利用StackExchange.Redis和Log4Net构建日志队列,为高并发日志处 ...
- redmine添加自定义问题状态
使用管理员登录 首先添加一个问题状态:挂起 创建之后,会出现不显示这个先状态的情况,所以我们还需要进行其他的配置.注意,先取消只显示被次跟踪标签使用的状态,然后点击编辑,才会看到新创建的挂起状态 然后 ...
- PHP 获取上月,本月,近15天,近30天日期
<?php //echo $_SERVER['PHP_SELF']; //define('ROOT_PATH',str_replace($_SERVER['PHP_SELF'],'',str_r ...
- c# 线程同步各类锁
1)原子操作(Interlocked):所有方法都是执行一次原子读取或一次写入操作. 2)lock()语句:避免锁定public类型,否则实例将超出代码控制的范围,定义private对象来锁定. 3) ...
- day40 css高级选择器
一.高级选择器 高级选择器分为:后代选择器.子代选择器.并集选择器.交集选择器 后代选择器 使用空格表示后代选择器.顾名思义,父元素的后代(包括儿子,孙子,重孙子) .container p{ col ...
- Zabbix-2.4-安装-3
zabbix自动注册简单介绍---创建自动注册的actions 怎么把1000台机器加zabbix里 zabbix提供了网络发现和自动注册2个功能,发现有机器连过来,给它加个模板 如果是win ...
- redis之 Redis持久化配置
Redis持久化配置 Redis的持久化有2种方式 1快照 2是日志 Rdb快照的配置选项 save 900 1 // 900内,有1条写入,则产生快照 save 300 1000 ...