栈 (Stack)
后进先出的策略的集合类型(LIFO)
栈的示意图
栈的接口抽象如下:
interface Stack<E> {
public void push(E item); // 添加一个元素
public E pop(); // 弹出一个元素
public E peek(); // 观察一下栈顶元素
public boolean isEmpty(); // 栈是否为空
int size(); // 查看栈的大小
}
一些特点:
- 后进先出(LIFO)
- pop()与peek()的区别是: pop后的元素将会消失, peek不会.
- 我们只能看见栈顶的元素, 使用peek查看, 或者pop弹出.
- 栈的实现我们可以使用数组, 也可以使用链表.
队列 (Queue)
先进先出(FIFO), 就像是经过一个管道, 谁先进, 谁先出.
严格的队列定义我们只能看到队首元素, 要查看其他的元素, 必须一一出队列.
队列的接口抽象如下:
interface Queue<E>{
void enqueue(E e); // 添加一个元素
E dequeue(); // 移除一个队首元素并返回
E peek(); // 查看一个队首元素并返回
public boolean isEmpty(); // 栈是否为空
int size(); // 查看队列大小
}
队列的一些点:
- 先进先出(FIFO), 就像是排队, 先到先得
- 我们只能查看队首元素
- 队列的实现我们也是可以使用数组, 使用链表的
背包(Bag)
背包是一种不支持从中删除元素的集合数据类型.
用来收集元素. 元素出背包的时候是没有顺序的, 就像背包一样.
在java中需要为其实现iterable接口, 遍历取出其中的元素.
其接口定义如下:
interface Bag<E> Iterable<Item>{
void add(E e);
boolean isEmpty();
int size();
...
}
网友评论