问题:面试时要求用数组模拟栈
解决方案:
import java.util.Arrays; @SuppressWarnings("unchecked") public class MyStack<E> { private E[] arr = (E[]) new Object[5]; private int index = arr.length - 1; // 推入栈 public void push(E e) { index--; if (index < 0) { int len = arr.length; E[] newArr = (E[]) new Object[len * 2]; System.arraycopy(arr, 0, newArr, len, len); arr = Arrays.copyOfRange(newArr, 0, len * 2); index = len - 1; arr[index] = e; return; } arr[index] = e; } // 取出栈 public E pop() { System.out.println(arr.length + " = index = " + index); if (index > arr.length - 1) { return null; } E e = arr[index]; index++; return e; } }