From e825c2cfdd34a54af07485653868de34191a80df Mon Sep 17 00:00:00 2001 From: Oliver Akins Date: Sun, 25 Dec 2022 15:55:44 -0600 Subject: [PATCH] Add an OrderedSet datatype --- jlib/OrderedSet.java | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 jlib/OrderedSet.java diff --git a/jlib/OrderedSet.java b/jlib/OrderedSet.java new file mode 100644 index 0000000..873551f --- /dev/null +++ b/jlib/OrderedSet.java @@ -0,0 +1,36 @@ +package jlib; + +import java.util.HashSet; +import java.util.Stack; + +public class OrderedSet extends HashSet { + private Stack order; + + public OrderedSet() { + this.order = new Stack(); + } + + @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(); + } +}