Ruby fixed-capacity LRU cache
Ruby
class LruCache
def initialize(capacity)
raise ArgumentError, 'capacity must be positive' unless capacity.positive?
@capacity = capacity
@data = {}
end
def get(key)
return nil unless @data.key?(key)
@data[key] = @data.delete(key)
end
def put(key, value)
@data.delete(key)
@data[key] = value
@data.delete(@data.first[0]) while @data.size > @capacity
value
end
end