/** Implementation of a priority queue by means of a sorted list */
public class SortedListAdaptablePriorityQueue
extends SortedListPriorityQueue implements AdaptablePriorityQueue {
/** Creates the priority queue with the default comparator. */
public SortedListAdaptablePriorityQueue() {
super();
}
/** Creates the priority queue with the given comparator. */
public SortedListAdaptablePriorityQueue(Comparator comp) {
super(comp);
}
/** Inserts a key-value pair and returns the entry created. */
public Entry insert (Object k, Object v) throws InvalidKeyException {
checkKey(k);
LocationAwareEntry entry = new LocationAwareEntry(k,v);
insertEntry(entry);
entry.setLocation(actionPos);
return entry;
}
/** Removes and returns the given entry. */
public Entry remove(Entry entry) {
checkEntry(entry);
LocationAwareEntry e = (LocationAwareEntry) entry;
Position p = e.location();
L.remove(p);
e.setLocation(null);
return e;
}
/** Replaces the key of the given entry. */
public Object replaceKey(Entry entry, Object k) {
checkKey(k);
checkEntry(entry);
LocationAwareEntry e = (LocationAwareEntry) remove(entry);
Object oldKey = e.setKey(k);
insertEntry(e);
e.setLocation(actionPos);
return oldKey;
}