1package org.udger.parser;
3import java.io.Serializable;
4import java.util.HashMap;
10public class LRUCache<K, V>
implements Serializable {
12 private static final long serialVersionUID = 275929298283639982L;
14 private static class Node<K, V>
implements Serializable {
15 private static final long serialVersionUID = -2815264316130381309L;
16 private Node<K, V> prev;
17 private Node<K, V> next;
22 private Node<K, V> head;
23 private Node<K, V> tail;
26 private final Map<K, Node<K, V>> map =
new HashMap<>();
29 this.capacity = capacity;
32 public int getCapacity() {
36 public void setCapacity(
int capacity) {
37 if (this.capacity > capacity) {
38 while (map.size() > capacity) {
39 assert (tail !=
null);
45 this.capacity = capacity;
52 public V
get(K uaString) {
53 Node<K, V> node = map.get(uaString);
56 if (node.next !=
null) {
57 node.next.prev = node.prev;
61 node.prev.next = node.next;
72 public void put(K key, V value) {
73 Node<K, V> node = map.get(key);
88 if (map.size() > capacity) {
89 assert (tail !=
null);