Add an OrderedSet datatype
This commit is contained in:
parent
76052fdcb9
commit
e825c2cfdd
1 changed files with 36 additions and 0 deletions
36
jlib/OrderedSet.java
Normal file
36
jlib/OrderedSet.java
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
package jlib;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
|
public class OrderedSet<T> extends HashSet<T> {
|
||||||
|
private Stack<T> order;
|
||||||
|
|
||||||
|
public OrderedSet() {
|
||||||
|
this.order = new Stack<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean add(T e) {
|
||||||
|
if (super.add(e)) {
|
||||||
|
this.order.add(e);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the most recently added element from the set
|
||||||
|
*
|
||||||
|
* @return The element that was removed from the set
|
||||||
|
*/
|
||||||
|
public T pop() {
|
||||||
|
T e = this.order.pop();
|
||||||
|
this.remove(e);
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T top() {
|
||||||
|
return this.order.peek();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue