1.实现Stack接口
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();
}
2.实现ArrayStack
2.1 ArrayStack的属性:
(1)private ArrayList list;//底层使用ArrayList
(2)构造器:提供一个无参、一个带参
代码:
private ArrayList<E> list;
public ArrayStack(){
list = new ArrayList<>();
}
public ArrayStack(int capacity){
list = new ArrayList<>(capacity);
}
2.2 ArrayStack的方法:
int size():获取栈中数据
boolean isEmpty():判空操作
void push(E element):压栈
E pop():出栈
E peek():获取栈顶元素
void clear():清空栈中元素
Iterator iterator():栈的迭代器
String toString():toString方法
boolean equals(Object o):判断是否相等
全代码实现:
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 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;
}
}