59 lines
1.0 KiB
Lua
59 lines
1.0 KiB
Lua
|
|
local oo = require "Class"
|
||
|
|
local Queue = oo.class()
|
||
|
|
|
||
|
|
--初始化
|
||
|
|
function Queue:ctor()
|
||
|
|
self.list = {}
|
||
|
|
self.map = {}
|
||
|
|
self.Count = 0
|
||
|
|
end
|
||
|
|
|
||
|
|
--入队
|
||
|
|
function Queue:EnQueue( key , value )
|
||
|
|
if not key or not value then
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
if not self.map[ key ] then
|
||
|
|
table.insert(self.list, { key = key , value = value })
|
||
|
|
self.Count = self.Count + 1
|
||
|
|
self.map[ key ] = true
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
--出队
|
||
|
|
function Queue:DeQueue()
|
||
|
|
if self.Count == 0 then
|
||
|
|
return nil
|
||
|
|
end
|
||
|
|
local item = self.list[1]
|
||
|
|
table.remove(self.list, 1)
|
||
|
|
self.map[ item.key ] = nil
|
||
|
|
self.Count = self.Count - 1
|
||
|
|
return item
|
||
|
|
end
|
||
|
|
|
||
|
|
--查看
|
||
|
|
function Queue:Peek()
|
||
|
|
if self.Count == 0 then
|
||
|
|
return nil
|
||
|
|
end
|
||
|
|
return self.list[1]
|
||
|
|
end
|
||
|
|
|
||
|
|
--是否存在
|
||
|
|
function Queue:IsExist( key )
|
||
|
|
if self.map[ key ] then
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
--获取数量
|
||
|
|
function Queue:GetCount( key )
|
||
|
|
return self.Count
|
||
|
|
end
|
||
|
|
|
||
|
|
return Queue
|