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