【文件属性】:
文件名称:时间内移-详解java 三种调用机制(同步、回调、异步)
文件大小:4.56MB
文件格式:PDF
更新时间:2021-06-30 03:17:09
Delphi
下文中讨论),要么从空闲列表中分配一个新元素。后者是通过在 O(1)时间内移
动几个指针来完成的。
接下来,在列表的开头插入一个新元素。同样,只移动了几个指针,代码在
O(1)中运行。
最后,更新键和值,(key, index)映射到字典中,这又是一个 O(1)操作:
procedure TDHPCache
.AddElement(const key: K; const value: V);
var
element: integer;
begin
if IsFull then
element := RemoveOldest
else
element := GetFree;
InsertInFront(element);
FKeys[element].Key := key;
FKeys[element].Value := value;
FCache.Add(key, element);
end;
唯一未解的部分是 RemoveOldest 函数。它将首先从列表中删除最后一个元
素(Unlink(FTail)),这是一个简单的 O(1)操作。然后,它将从缓存(O(1))中删除(键,
索引)映射,并销毁旧的值,如果缓存拥有其值:
function TDHPCache.RemoveOldest: Integer;
var
element: Integer;
begin