Package org.apache.tomcat.util.digester

# Class ArrayStack<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<E>
org.apache.tomcat.util.digester.ArrayStack<E>

Type Parameters:
  `E` - Type of object in this stack

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Iterable<E>`, `Collection<E>`, `List<E>`, `RandomAccess`, `SequencedCollection<E>`

public class ArrayStack<E> extends ArrayList<E>

Imported copy of the `ArrayStack` class from Commons Collections, which was the only direct dependency from Digester.

WARNING - This class is public solely to allow it to be used from subpackages of `org.apache.commons.digester`. It should not be considered part of the public API of Commons Digester. If you want to use such a class yourself, you should use the one from Commons Collections directly.

An implementation of the `Stack` API that is based on an `ArrayList` instead of a `Vector`, so it is not synchronized to protect against multi-threaded access. The implementation is therefore operates faster in environments where you do not need to worry about multiple thread contention.

Unlike `Stack`, `ArrayStack` accepts null entries.

Since:
  Digester 1.6 (from Commons Collections 1.0)
See Also:
  - `Stack`
  - Serialized Form

- ## Field Summary

  ### Fields inherited from class java.util.AbstractList

  `modCount`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ArrayStack()`
  Constructs a new empty `ArrayStack`.
  `ArrayStack(int initialSize)`
  Constructs a new empty `ArrayStack` with an initial size.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `empty()`
  Return `true` if this stack is currently empty.
  `E`
  `peek()`
  Returns the top item off of this stack without removing it.
  `E`
  `peek(int n)`
  Returns the n'th item down (zero-relative) from the top of this stack without removing it.
  `E`
  `pop()`
  Pops the top item off of this stack and return it.
  `E`
  `push(E item)`
  Pushes a new item onto the top of this stack.

  ### Methods inherited from class java.util.ArrayList

  `add, add, addAll, addAll, addFirst, addLast, clear, clone, contains, ensureCapacity, equals, forEach, get, getFirst, getLast, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeFirst, removeIf, removeLast, removeRange, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray, trimToSize`

  ### Methods inherited from class java.util.AbstractCollection

  `containsAll, toString`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface java.util.Collection

  `parallelStream, stream, toArray`

  ### Methods inherited from interface java.util.List

  `containsAll, reversed`

- ## Constructor Details

  - ### ArrayStack

    public ArrayStack()
    Constructs a new empty `ArrayStack`. The initial size is controlled by `ArrayList` and is currently 10.

  - ### ArrayStack

    public ArrayStack(int initialSize)
    Constructs a new empty `ArrayStack` with an initial size.
    Parameters:
      `initialSize` - the initial size to use
    Throws:
      `IllegalArgumentException` - if the specified initial size is negative

- ## Method Details

  - ### empty

    public boolean empty()
    Return `true` if this stack is currently empty.

    This method exists for compatibility with `java.util.Stack`. New users of this class should use `isEmpty` instead.

    Returns:
      true if the stack is currently empty

  - ### peek

    public E peek() throws EmptyStackException
    Returns the top item off of this stack without removing it.
    Returns:
      the top item on the stack
    Throws:
      `EmptyStackException` - if the stack is empty

  - ### peek

    public E peek(int n) throws EmptyStackException
    Returns the n'th item down (zero-relative) from the top of this stack without removing it.
    Parameters:
      `n` - the number of items down to go
    Returns:
      the n'th item on the stack, zero relative
    Throws:
      `EmptyStackException` - if there are not enough items on the stack to satisfy this request

  - ### pop

    public E pop() throws EmptyStackException
    Pops the top item off of this stack and return it.
    Returns:
      the top item on the stack
    Throws:
      `EmptyStackException` - if the stack is empty

  - ### push

    public E push(E item)
    Pushes a new item onto the top of this stack. The pushed item is also returned. This is equivalent to calling `add`.
    Parameters:
      `item` - the item to be added
    Returns:
      the item just pushed