首页 > 代码库 > LRU简单实现

LRU简单实现

<pre name="code" class="java">import java.util.HashMap;
import java.util.Map;

public class LRUCache {
	private int capacity;
	private int len;

	class Data {
		int key;
		int value;
		Data next;
		Data pre;
	}

	private Map<Integer, Data> dataSet;

	private Data head;
	private Data rail;

	public LRUCache(int capacity) {
		this.capacity = capacity;
		this.len = 0;
		this.head = null;
		this.rail = null;
		this.dataSet = new HashMap<Integer, Data>();
	}

	public int get(int key) {
		if (!dataSet.containsKey(key))
			return -1;
		Data temp = dataSet.get(key);
		if (temp == head) {
			return temp.value;
		} else if (temp == rail) {
			temp.pre.next = null;
			rail = temp.pre;
		} else {
			temp.pre.next = temp.next;
			temp.next.pre = temp.pre;
		}
		temp.next = head;
		temp.pre = null;
		head.pre = temp;
		head = temp;
		return temp.value;

	}

	public void set(int key, int value) {
		if (capacity == 0)
			return;
		if (dataSet.containsKey(key)) {
			Data temp = dataSet.get(key);
			if (temp == head) {
				temp.value = http://www.mamicode.com/value;>

LRU简单实现