/**
* 该类主要在BaseHashObject类基础上,增加了双向链表的支持。
*
*/
public abstract class LinkedBaseHashObject extends BaseHashObject{
LinkedBaseHashObject before, after;
@SuppressWarnings("unchecked")
public void recordAccess(HashObjectMap<? extends BaseHashObject> m){
LinkedHashObjectMap<LinkedBaseHashObject> lm = (LinkedHashObjectMap<LinkedBaseHashObject>)m;
if (lm.isAccessOrder()) {
lm.modCount++;
remove();
addBefore(lm.getHeader());
}
}
public void recordRemoval(HashObjectMap<? extends BaseHashObject> m){
remove();
}
public void remove() {
before.after = after;
after.before = before;
}
public void addBefore(LinkedBaseHashObject existingObject) {
after = existingObject;
before = existingObject.before;
before.after = this;
after.before = this;
}
}
* 该类主要在BaseHashObject类基础上,增加了双向链表的支持。
*
*/
public abstract class LinkedBaseHashObject extends BaseHashObject{
LinkedBaseHashObject before, after;
@SuppressWarnings("unchecked")
public void recordAccess(HashObjectMap<? extends BaseHashObject> m){
LinkedHashObjectMap<LinkedBaseHashObject> lm = (LinkedHashObjectMap<LinkedBaseHashObject>)m;
if (lm.isAccessOrder()) {
lm.modCount++;
remove();
addBefore(lm.getHeader());
}
}
public void recordRemoval(HashObjectMap<? extends BaseHashObject> m){
remove();
}
public void remove() {
before.after = after;
after.before = before;
}
public void addBefore(LinkedBaseHashObject existingObject) {
after = existingObject;
before = existingObject.before;
before.after = this;
after.before = this;
}
}