# Class Stack<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.Vector<E>
java.util.Stack<E>

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

public class Stack<E> extends Vector<E>
`Stack` is a Last-In/First-Out(LIFO) data structure which represents a stack of objects. It enables users to pop to and push from the stack, including null objects. There is no limit to the size of the stack.

- ## Field Summary

  ### Fields inherited from class Vector

  `capacityIncrement, elementCount, elementData`

  ### Fields inherited from class AbstractList

  `modCount`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Stack()`
  Constructs a stack with the default size of `Vector`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `empty()`
  Returns whether the stack is empty or not.
  `E`
  `peek()`
  Returns the element at the top of the stack without removing it.
  `E`
  `pop()`
  Returns the element at the top of the stack and removes it.
  `E`
  `push(E object)`
  Pushes the specified object onto the top of the stack.
  `int`
  `search(Object o)`
  Returns the index of the first occurrence of the object, starting from the top of the stack.

  ### Methods inherited from class Vector

  `add, add, addAll, addAll, addElement, capacity, clear, contains, containsAll, copyInto, elementAt, elements, ensureCapacity, equals, firstElement, get, hashCode, indexOf, indexOf, insertElementAt, isEmpty, lastElement, lastIndexOf, lastIndexOf, remove, remove, removeAll, removeAllElements, removeElement, removeElementAt, removeRange, retainAll, set, setElementAt, setSize, size, subList, toArray, toArray, toString, trimToSize`

  ### Methods inherited from class AbstractList

  `iterator, listIterator, listIterator`

  ### Methods inherited from class Object

  `clone, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface Collection

  `removeIf`

  ### Methods inherited from interface Iterable

  `forEach`

  ### Methods inherited from interface List

  `iterator, listIterator, listIterator, replaceAll, sort`

- ## Constructor Details

  - ### Stack

    public Stack()
    Constructs a stack with the default size of `Vector`.

- ## Method Details

  - ### empty

    public boolean empty()

    Returns whether the stack is empty or not.

    ###### Returns

    `true` if the stack is empty, `false` otherwise.

  - ### peek

    public E peek()

    Returns the element at the top of the stack without removing it.

    ###### Returns

    the element at the top of the stack.

    ###### Throws

    - `EmptyStackException`: if the stack is empty.

    ###### See also

    - #pop

  - public E pop()

    Returns the element at the top of the stack and removes it.

    ###### Returns

    the element at the top of the stack.

    ###### Throws

    - `EmptyStackException`: if the stack is empty.

    ###### See also

    - #peek

    - #push

  - public E push(E object)

    Pushes the specified object onto the top of the stack.

    ###### Parameters

    - `object`: The object to be added on top of the stack.

    ###### Returns

    the object argument.

    ###### See also

    - #peek

    - #pop

  - ### search

    public int search(Object o)

    Returns the index of the first occurrence of the object, starting from the top of the stack.

    ###### Parameters

    - `o`: the object to be searched.

    ###### Returns

    Returns:
      the index of the first occurrence of the object, assuming that the topmost object on the stack has a distance of one.