首页
Java面试
PHP面试
经验笔记
在线工具
首页
在线工具
Redis LRU算法
java LRU算法
C语言 在线运行
C++ 在线运行
Java 在线运行
PHP 在线运行
Python 在线运行
Python3 在线运行
Nodejs 在线运行
Ruby 在线运行
Perl 在线运行
Go 在线运行
R语言 在线运行
Lua 在线运行
C# 在线运行
结果显示HTML
清空
点击运行
import java.util.HashMap; public class Lru { private Node head ; //头部节点 private Node tail;//尾部节点 private HashMap
hashMap = new HashMap();//所有的node节点 private Integer size = 3;//最大容量 //定义内部类节点Node private static class Node{ String key;//key Node prev ;//前驱 Node next;//后置 public Node(String key) { this.key = key; } } /** * show */ public void show(){ Node temp = head; while (true) { System.out.println(temp.key); if (temp.next == null) { break; } temp = temp.next; } } /** * 移动到首部 * @param node */ private void moveToHead(Node node) { if (head == node) { return; } if (node.next != null) { node.next.prev = node.prev; } if (node.prev != null) { node.prev.next = node.next; } if (node == tail) { tail = tail.prev; } if (head == null || tail == null) { head = tail = node; return; } node.next = head; head.prev = node; head = node; head.prev = null; } /** * 添加元素 * @param key */ public void add(String key){ Node node = hashMap.get(key); if (null == node) { //不存在 // 如果超过最大容量,移除最后一个节点 if (hashMap.size()>=this.size) { hashMap.remove(key); removeTail(); } // 没有超过最大节点,创建一个节点 node = new Node(key); } //将该节点添加到链表首部,并放入hashmap moveToHead(node); hashMap.put(key, node); } /** * 移除尾部节点 */ private void removeTail(){ if (tail != null) { tail = tail.prev; if (tail == null) { head = null; } else { tail.next = null; } } } /** * 删除元素 * @param key */ public void del(String key){ Node node = hashMap.get(key); if (node != null) { if (node.prev != null) { node.prev.next = node.next; } if (node.next != null) { node.next.prev = node.prev; } if (node == head) { head = node.next; } if (node == tail) { tail = node.prev; } } hashMap.remove(key); } public static void main(String args[]){ //0,2,3,1,2,4 Lru lru = new Lru(); lru.add("0"); lru.add("2"); lru.add("3"); lru.add("1"); lru.add("2"); lru.add("4"); lru.show(); } }
运行结果
java LRU算法在线测试,这是一个简单方便的Java在线运行工具,支持在线编译、在线调试和在线结果的实时反馈。