一、定义接口
package p1.接口;
public interface Stack<E> extends Iterable<E> {
public int size();
public boolean isEmpty();
public void push(E element);
public E pop();
public E peek();
public void clear();
}
二、通过ArrayStack类来实现接口对应功能
package p2.线性结构;
import p1.接口.Stack;
import java.lang.reflect.Array;
import java.util.Iterator;
public class ArrayStack<E> implements Stack<E> {
private ArrayList<E> list;
public ArrayStack() {
list = new ArrayList<>();
}
public ArrayStack(int capacity) {
list = new ArrayList<>(capacity);
}
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public void push(E element) {
list.add(element);
}
@Override
public E pop() {
return list.remove(list.size()-1);
}
@Override
public E peek() {
return list.get(list.size()-1);
}
@Override
public void clear() {
list.clear();
}
@Override
public Iterator<E> iterator() {
return list.iterator();
}
@Override
public String toString(){
return list.toString();
}
@Override
public boolean equals(Object o){
if (o == null) {
return false;
}
if (this == o){
return true;
}
if (o instanceof ArrayStack) {
ArrayStack other = (ArrayStack) o;
return this.list.equals(other.list);
}
return false;
}
}
三、测试类
package p2.线性结构;
import com.sun.org.apache.bcel.internal.generic.POP;
import com.sun.org.apache.xerces.internal.dom.PSVIDocumentImpl;
import java.sql.SQLOutput;
public class TestStack {
public static void main(String[] args) {
ArrayStack<Integer> stack01 = new ArrayStack<>();
ArrayStack<Integer> stack02 = new ArrayStack<>(15);
for (int i = 0; i <=13 ; i++) {
stack01.push(i);
stack02.push(i);
}
System.out.println(stack01);
stack01.pop();
stack01.push(23);
System.out.println(stack01);
System.out.println(stack01.size());
System.out.println(stack02.size());
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/a0faea95ba6545e9a7984d8b58b6939d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASnV2ZW5pbGXlsJHlubQ=,size_15,color_FFFFFF,t_70,g_se,x_16#pic_center)