package org.warp.commonutils.type; import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.NoSuchElementException; import org.warp.commonutils.error.IndexOutOfBoundsException; /** * A stack but with the behavior of a Linked HashSet * *
A stack must provide the classical {@link #push(Object)} and
* {@link #pop()} operations, but may be also peekable to some extent: it may provide just the {@link #top()}
* function, or even a more powerful {@link #peek(int)} method that provides access to all elements on the stack
* (indexed from the top, which has index 0).
*/
public interface StackSet This default implementation returns {@link #peek(int) peek(0)}.
*
* @return the top of the stack.
* @throws NoSuchElementException if the stack is empty.
*/
default K top() {
return peek(0);
}
/**
* Peeks at an element on the stack (optional operation).
*
* This default implementation just throws an {@link UnsupportedOperationException}.
*
* @param i an index from the stop of the stack (0 represents the top).
* @return the {@code i}-th element on the stack.
* @throws IndexOutOfBoundsException if the designated element does not exist..
*/
default K peek(int i) {
throw new UnsupportedOperationException();
}
static