LRU(Least Recently Used)页面置换算法——最近最久未使用
数据结构:ArrayDeque双端队列
import java.util.ArrayDeque;
import java.util.Scanner;
public class LRULearn {
public static void main(String[] args) {
String Serial = new Scanner(System.in).next();
LRU lru = new LRU(8);
lru.VisitPage1(Serial);
System.out.println(lru.getQueue());
}
}
class LRU{
private int Cache;
private ArrayDeque<Character> queue=new ArrayDeque<>();
public ArrayDeque<Character> getQueue() {
return queue;
}
public LRU(int cache) {
Cache = cache;
}
/*
public void VisitPage(String Serial){
for(int i=0;i<Serial.length();i++){
if(i<Cache){
queue.addFirst(Serial.charAt(i));
}
if(queue.contains(Serial.charAt(i))){
queue.remove(Serial.charAt(i));
queue.addFirst(Serial.charAt(i));
}
else{
queue.removeLast();
queue.addFirst(Serial.charAt(i));
}
}
//System.out.println(queue);
}
*/
public void VisitPage1(String Serial){
for(int i=0;i<Serial.length();i++){
//先判断满不满
if (!isFull()){
if (!queue.contains(Serial.charAt(i))){
queue.addFirst(Serial.charAt(i));
}else {
queue.remove(Serial.charAt(i));
queue.addFirst(Serial.charAt(i));
}
}else {
if (!queue.contains(Serial.charAt(i))){
queue.removeLast();
queue.addFirst(Serial.charAt(i));
}else {
queue.remove(Serial.charAt(i));
queue.addFirst(Serial.charAt(i));
}
}
}
}
public boolean isFull(){
return queue.size()==Cache;
}
}