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`

    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
`ArrayStack()` Constructs a new empty `ArrayStack`.
`ArrayStack​(int initialSize)` Constructs a new empty `ArrayStack` with an initial size.

### Method Summary

All Methods Instance Methods Concrete Methods
`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, clear, clone, contains, ensureCapacity, equals, forEach, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeIf, 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`

### Constructor Detail

#### 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 Detail

#### 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