public class MyArrayStack<T> implements MyStack<T> { private Object[] objs = new Object[16]; private int size = 0; @Override public void clear() { for (int i = 0; i < objs.length; i++) { objs[i]=null; } size=0; }
@Override public boolean isEmpty() { return 0==size; }
@Override public int length() { return size; }
@Override public T pop() { if(size==0){ return null; } return (T) objs[--size]; }
@Override public boolean push(T data) { /* * 询问是否需要扩容 */ if (size>=objs.length) { resize(); } objs[size++]=data; return true; } public void resize(){ Object[]temp=new Object[objs.length*3/2+1]; for (int i = 0; i < temp.length; i++) { temp[i]=objs[i]; objs[i]=null; } objs=temp; }
@Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("MyArrayStack: ["); for (int i = 0; i < size; i++) { sb.append(objs[i].toString()); if (i != size - 1) { sb.append(", "); } } sb.append("]"); return sb.toString(); }
} package com.stack.sym;
public class Person { Person(int age, String sex) { this.age = age; this.sex = sex; }
private int age; private String sex; } package com.stack.sym;