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

  `iterator, listIterator, listIterator`

- ## 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()`

  - ### 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(E)`

  - ### 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:
      the index of the first occurrence of the object, assuming that the topmost object on the stack has a distance of one.