package com.coding.basic.impl; import com.coding.basic.Iterator; /** * 栈的简单实现 * @author 240094626 */ public class Stack { /**长度可变的元素容器*/ private ArrayList elementData = new ArrayList(); /** * 压入栈 * @param o */ public void push(Object o){ elementData.add(o); } /** * 出栈(末尾元素),并移除 * @return Object */ public Object pop(){ return elementData.remove(elementData.size()-1); } /** * 取出栈(末尾元素),不移除 * @return Object */ public Object peek(){ return elementData.get(elementData.size()-1); } /** * 判断栈是否为空 * @return boolean */ public boolean isEmpty(){ return elementData.size() == 0 ? true : false; } /** * 栈的长度,既是容器ArrayList的长度 * @return int */ public int size(){ return elementData.size(); } @Override public String toString() { return "Stack {elementData=" + elementData + "}"; } public Iterator iterator(){ return new StackIterator(); } private class StackIterator implements Iterator{ int index; public StackIterator() { index = 0; } @Override public boolean hasNext() { if(index < elementData.size()){ return true; } return false; } @Override public Object next() { return elementData.get(index++); } } }