利用一个特殊的站保存当前使用的各个页面的页面号,每当进程访问某页面时,便将该页面的页面号从占中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。
1 package test1; 2 3 import java.util.Stack; 4 5 public class LeastRecentPage 6 { 7 private static Stack<Integer> cache; 8 9 // METHOD SIGNATURE BEGINS, THIS METHOD IS REQUIRED 10 public static int lruCountMiss(int max_cache_size, int[] pages) { 11 12 int missCount = 0; 13 14 if (cache == null) { 15 cache = new Stack<Integer>(); 16 } 17 18 int length = pages.length; 19 for (int j = 0;j < length; j++){ 20 if(cache.contains(pages[j])){ 21 cache.removeElement(pages[j]); 22 cache.push(pages[j]); 23 }else { 24 if(cache.size() == max_cache_size){ 25 cache.remove(0); 26 cache.push(pages[j]); 27 missCount++; 28 }else if(cache.size() < max_cache_size){ 29 cache.push(pages[j]); 30 missCount++; 31 } 32 } 33 } 34 35 return missCount; 36 } 37 // METHOD SIGNATURE ENDS 38 39 public static void main(String[] args) { 40 int count = lruCountMiss(2,new int[]{2,3,1,3,2,1,4,3,2}); 41 System.out.println(count); 42 } 43 }
java 在util下提供了Stack类,其中包含主要的方法:(摘自java api)
1. push
public E push(E item)
Pushes an item onto the top of this stack. This has exactly the same effect as:
addElement(item)
-
Parameters:
-
item
- the item to be pushed onto this stack.
Returns:
-
the
item
argument.
See Also:
-
Vector.addElement(E)
2. pop
public E pop()
Removes the object at the top of this stack and returns that object as the value of this function.
-
Returns:
- The object at the top of this stack (the last item of the Vector object). Throws:
-
EmptyStackException
- if this stack is empty.
3. peek
public E peek()
Looks at the object at the top of this stack without removing it from the stack.
-
Returns:
- the object at the top of this stack (the last item of the Vector object). Throws:
-
EmptyStackException
- if this stack is empty.
4. empty
public boolean empty()
Tests if this stack is empty.
-
Returns:
-
true
if and only if this stack contains no items;false
otherwise.
5. search
public int search(Object o)
Returns the 1-based position where an object is on this stack. If the object
o occurs as an item in this stack, this method returns the distance from the top of the stack of the occurrence nearest the top of the stack; the topmost item on the stack is considered to be at distance 1. The equals method is used to compare o to the items in this stack.
-
Parameters:
-
o
- the desired object.
Returns:
-
the 1-based position from the top of the stack where the object is located; the return value
-1
indicates that the object is not on the stack.