package com.coderising.lru;
public class LRU {
private static final int N = 5;
Object[] arr = new Object[N];
private int size;
public boolean isEmpty() {
if(size == 0) {
return true;
}
else {
return false;
}
}
public boolean isOutOfBoundary() {
if(size >= N) {
return true;
}
else {
return false;
}
}
public int indexOfElement(Object o) {
for(int i = 0; i < size; i++){
if(o == arr[i]) {
return i;
}
}
return -1;
}
public Object push(Object o) {
Object popObject = null;
if(!isOutOfBoundary() && indexOfElement(o) == -1) {
arr[size] = o;
size++;
}
else if(isOutOfBoundary() && indexOfElement(o) == -1) {
popObject = arr[0];
System.arraycopy(arr, 1, arr, 0, size -1);
arr[size - 1] = o;
}
else {
int index = indexOfElement(o);
System.arraycopy(arr, index + 1, arr, index, size - index - 1);
arr[size -1] = o;
}
return popObject;
}
public void showMemoryBlock() {
for(int i=0; i<size; i++) {
System.out.print(arr[i] + "\t");
}
}
@Override
public String toString() {
String retStr = null;
if(size > 0) {
for(int i = 0; i < size; i++) {
retStr += "," + arr[i];
}
retStr = retStr.substring(1);
}
return retStr;
}
}