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

`containsAll, toString`

### Methods inherited from class Object

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

### Methods inherited from interface Collection

`parallelStream, stream, toArray`

### Methods inherited from interface 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