Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.LinkedHashMap
- class LRUCache<K : Any, V : Any>(
- val capacity: Int,
- val onRemove: (key: K, value: V) -> Unit = { _, _ -> }
- ) {
- private val map: LinkedHashMap<K, V> = LinkedHashMap(capacity+1, 1f, true)
- operator fun get(key: K): V? {
- return map[key]
- }
- operator fun set(key: K, value: V) {
- map[key] = value
- if (map.size > capacity) {
- val removedKey = map.keys.iterator().next()
- val removedValue = requireNotNull(map.remove(removedKey))
- onRemove(removedKey, removedValue)
- }
- }
- }
Add Comment
Please, Sign In to add comment