package com.elphin.framework.app.fpstack;
import java.util.Stack;
/**
* 可重新排序的stack
*
* <p>
* 如果栈中已有需要push的元素,把已有的元素移动到栈顶,栈中不存在重复元素。
* </p>
* @author elphin
* @version 1.0
* @date 13-6-18 下午12:12
*/
class ReorderStack<T> extends Stack<T> {
@Override
public T push(T object) {
if(!this.contains(object)) {
return super.push(object);
}
int i,cnt = this.size();
for( i = cnt -1; i>=0;i--) {
T obj = this.get(i);
if(object.equals(obj)){
remove(i);
break;
}
}
cnt = this.size();
if(i>=1 && i<cnt) {
if(get(i-1).equals(get(i))) {
remove(i);
}
}
return super.push(object);
}
}