LRU(LeastRecently 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;}}
如果觉得《LRU(Least Recently Used)页面置换算法》对你有帮助,请点赞、收藏,并留下你的观点哦!