package io.ebeaninternal.server.util;

import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.List;

Stack based on ArrayList.
Author:rbygrave
/** * Stack based on ArrayList. * * @author rbygrave */
public class ArrayStack<E> { private final List<E> list;
Creates an empty Stack with an initial size.
/** * Creates an empty Stack with an initial size. */
public ArrayStack(int size) { this.list = new ArrayList<>(size); }
Creates an empty Stack.
/** * Creates an empty Stack. */
public ArrayStack() { this.list = new ArrayList<>(); } @Override public String toString() { return list.toString(); }
Pushes an item onto the top of this stack.
/** * Pushes an item onto the top of this stack. */
public void push(E item) { list.add(item); }
Removes the object at the top of this stack and returns that object as the value of this function.
/** * Removes the object at the top of this stack and returns that object as * the value of this function. */
public E pop() { int len = list.size(); if (len == 0) { throw new EmptyStackException(); } return list.remove(len - 1); } private E peekZero(boolean retNull) { int len = list.size(); if (len == 0) { if (retNull) { return null; } throw new EmptyStackException(); } return list.get(len - 1); }
Returns the object at the top of this stack without removing it.
/** * Returns the object at the top of this stack without removing it. */
public E peek() { return peekZero(false); }
Returns the object at the top of this stack without removing it. If the stack is empty this returns null.
/** * Returns the object at the top of this stack without removing it. * If the stack is empty this returns null. */
public E peekWithNull() { return peekZero(true); }
Tests if this stack is empty.
/** * Tests if this stack is empty. */
public boolean isEmpty() { return list.isEmpty(); } public int size() { return list.size(); } public boolean contains(E o) { return list.contains(o); } }