java通过url下载缓存_Java URL缓存算法

importjava.util.Hashtable;/***

*@authoradmin

**/

public classLRUCache {private intcacheSize;private Hashtablenodes;private intcurrentSize;privateCacheNode first;privateCacheNode last;private classCacheNode {

CacheNode prev;

CacheNode next;

Object value;

Object key;

}public LRUCache(inti) {this.currentSize = 0;this.cacheSize =i;this.nodes = new Hashtable(i);

}publicObject get(Object key) {

CacheNode node=(CacheNode) nodes.get(key);if (node != null) {

moveToHead(node);returnnode.value;

}else{return null;

}

}public voidput(Object key, Object value) {

CacheNode node=(CacheNode) nodes.get(key);if (node == null) {if (currentSize >=cacheSize) {if (last != null)

nodes.remove(last.key);

removeLast();

}else{

currentSize++;

}

node= newCacheNode();

}

node.value=value;

node.key=key;

moveToHead(node);

nodes.put(key, node);

}publicObject remove(Object key) {

CacheNode node=(CacheNode) nodes.get(key);if (node != null) {if (node.prev != null) {

node.prev.next=node.next;

}if (node.next != null) {

node.next.prev=node.prev;

}if (last ==node)

last=node.prev;if (first ==node)

first=node.next;

}returnnode;

}public voidclear() {

first= null;

last= null;

}private voidremoveLast() {if (last != null) {if (last.prev != null)

last.prev.next= null;elsefirst= null;

last=last.prev;

}

}private voidmoveToHead(CacheNode node) {if (node ==first){return;

}if (node.prev != null){

node.prev.next=node.next;

}if (node.next != null){

node.next.prev=node.prev;

}if (last ==node){

last=node.prev;

}if (first != null) {

node.next=first;

first.prev=node;

}

first=node;

node.prev= null;if (last == null){

last=first;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值