PeekStack.java
- package org.opentrafficsim.road.network.factory;
- import java.util.ArrayList;
- /**
- * Stack object that allows easy verification of the values of the last few entries.
- * <p>
- * Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
- * BSD-style license. See <a href="http://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
- * <p>
- * $LastChangedDate: 2015-07-26 01:01:13 +0200 (Sun, 26 Jul 2015) $, @version $Revision: 1155 $, by $Author: averbraeck $,
- * initial version 24 jun. 2015 <br>
- * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
- * @param <T> type of the objects stored on this PeekStack
- */
- public class PeekStack<T> extends ArrayList<T>
- {
- /** */
- private static final long serialVersionUID = 20150624L;
- /**
- * Push an element on this stack.
- * @param element T; the element to push onto this stack
- */
- public final void push(final T element)
- {
- add(element);
- }
- /**
- * Pop an element off this stack.
- * @return T; the element that was popped of this stack
- */
- public final T pop()
- {
- int index = this.size() - 1;
- T result = get(index);
- remove(index);
- return result;
- }
- /**
- * Return the N-from-last element of this PeekStack.
- * @param offset int; if 0 the last pushed, but not yet popped element is returned; if offset is 1, the before last pushed,
- * but not yet popped element is returned; etc.
- * @return T; the addressed element
- */
- public final T peekNthLast(final int offset)
- {
- return get(this.size() - 1 - offset);
- }
- /**
- * Check if the elements on the top of this PeekStack are equal to the provided entries.
- * @param entries T...; the provided entries
- * @return boolean; true if this PeekStack contains, at the top, the provided entries in the specified order; false
- * otherwise
- */
- public final boolean topEntriesEqual(@SuppressWarnings("unchecked") final T... entries)
- {
- int mySize = size();
- if (entries.length > mySize)
- {
- return false;
- }
- for (int index = 0; index < entries.length; index++)
- {
- if (!peekNthLast(index).equals(entries[index]))
- {
- return false;
- }
- }
- return true;
- }
- /** {@inheritDoc} */
- @Override
- public final String toString()
- {
- return "PeekStack [size=" + size() + "]";
- }
- }