Ordered set implementation in lua
- It is not allowed to add duplicate into set
- The order of element is pre-served
- Adding element to head or tail is
O(1)
fast - Adding element in middle of set is
O(N)
slow, discouraged - Removing element from anywhere is
O(1)
fast - Anything could be element, except
nil
local OrderedSet = require "OrderedSet"
local set = OrderedSet.new({"a", "b", "c"})
set:insert("d")
set:insert("bb", 2) -- slow
set:remove("a")
-- traverse elements in the order as they were added
for index, element in set:pairs() do
print(index .. ": " .. element)
end
-- traverse elements in the reverse order
for index, element in set:pairs(true) do
print(index .. ": " .. element)
end
luarocks install OrderedScope
Artistic License 2.0