diff options
| author | Ben Culkin <scorpress@gmail.com> | 2020-04-07 21:21:12 -0400 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2020-04-07 21:21:12 -0400 |
| commit | 780a3da69b66921fb7bf7b5779fb44830bb45ddc (patch) | |
| tree | 5589db05d3379a0a910bc9c4ed469d795d83849c /base/src/main/java/bjc/utils/esodata/SpaghettiStack.java | |
| parent | 002516bd03b2ea3f731c8139c9a5f716902ab702 (diff) | |
Remove utils.esodata
utils.esodata now also lives in the esodata project; not here
Diffstat (limited to 'base/src/main/java/bjc/utils/esodata/SpaghettiStack.java')
| -rw-r--r-- | base/src/main/java/bjc/utils/esodata/SpaghettiStack.java | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/base/src/main/java/bjc/utils/esodata/SpaghettiStack.java b/base/src/main/java/bjc/utils/esodata/SpaghettiStack.java deleted file mode 100644 index 8f2924b..0000000 --- a/base/src/main/java/bjc/utils/esodata/SpaghettiStack.java +++ /dev/null @@ -1,102 +0,0 @@ -package bjc.utils.esodata; - -import java.util.Arrays; -import java.util.stream.Stream; - -/** - * Implements a spaghetti stack, which is a stack that is branched off of a - * parent stack. - * - * @param <T> - * The datatype stored in the stack. - * - * @author Ben Culkin - */ -class SpaghettiStack<T> extends Stack<T> { - /* Our backing stack. */ - private final Stack<T> backing; - /* The stack we branched off of. */ - private final Stack<T> parent; - - /** - * Create a new empty spaghetti stack, off of the specified parent. - * - * @param par - * The parent stack - */ - public SpaghettiStack(final Stack<T> par) { - backing = new SimpleStack<>(); - - parent = par; - } - - @Override - public void push(final T elm) { - backing.push(elm); - } - - @Override - public T pop() { - if(backing.empty()) return parent.pop(); - - return backing.pop(); - } - - @Override - public T top() { - if(backing.empty()) return parent.top(); - - return backing.top(); - } - - @Override - public int size() { - return parent.size() + backing.size(); - } - - @Override - public boolean empty() { - return backing.empty() && parent.empty(); - } - - @SuppressWarnings("unchecked") - @Override - public T[] toArray() { - return (T[]) Stream.concat(Arrays.stream(parent.toArray()), Arrays.stream(backing.toArray())).toArray(); - } - - @Override - public int hashCode() { - final int prime = 31; - - int result = 1; - result = prime * result + (backing == null ? 0 : backing.hashCode()); - result = prime * result + (parent == null ? 0 : parent.hashCode()); - - return result; - } - - @Override - public boolean equals(final Object obj) { - if(this == obj) return true; - if(obj == null) return false; - if(!(obj instanceof SpaghettiStack<?>)) return false; - - final SpaghettiStack<?> other = (SpaghettiStack<?>) obj; - - if(backing == null) { - if(other.backing != null) return false; - } else if(!backing.equals(other.backing)) return false; - - if(parent == null) { - if(other.parent != null) return false; - } else if(!parent.equals(other.parent)) return false; - - return true; - } - - @Override - public String toString() { - return String.format("SpaghettiStack [backing=%s, parent=%s]", backing, parent); - } -} |
