从屌丝到架构师的飞越(数据结构篇)-队列
一.介绍
队列(Queue)简称队,它也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。我们把进行插入的一端称作队尾(rear),进行删除的一端称作队首(front)。
向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除元素称为离队或出队,元素离队后,其后继元素就成为队首元素。由于队列的插入和删除操作分别是在各自的一端进行的,每个元素必然按照进入的次序离队,所以又把队列称为先进先出表(First In First Out, 简称FIFO)。
比如:我们去银行办理业务,去坐车都需要排队,新生入学站成一排军训,这些都需要用到我们的队列。
二.知识点介绍
1、队列原理
2、Queue用法
三.上课对应视频的说明文档
1、队列原理
(1) 图一:当我们队列为空的时候,我们放入了元素10,20,30,这个过程叫做入队的过程,放入元素后,我们的队首和队尾都发生了变化,队首是10元素,队尾是30元素。
(2) 图二:当10元素移出后,我们的操作过程是出队的过程,那么我们的队首发生了变化,队首为20元素,队尾不变
(3) 图三:如果我们在次写入一个元素40后,我们的队首不变,队尾发生了变化,队尾元素为40元素。
2、Queue用法
offer()添加一个元素并返回true,如果队列已满,则返回false
poll()移除并返问队列头部的元素,如果队列为空,则返回null
peek()返回队列头部的元素,如果队列为空,则返回null
代码示例:
import java.util.*;
public class QueueTest{
public static void main(String args[]){
Queue q=new LinkedList();
q.offer("A");
q.offer("B");
q.offer("C");
System.out.println(q.peek());//获取队首元素
q.offer("D");
System.out.println(q.poll());//移出并获取队首元素
System.out.println(q);
}
}
代码示例2:
import java.util.LinkedList;
import java.util.Queue;
public class QueueTest {
public static void main(String[] args) {
//add()和remove()方法在失败的时候会抛出异常(不推荐)
Queue<String> queue = new LinkedList<String>();
//添加元素
queue.offer("a");
queue.offer("b");
queue.offer("c");
queue.offer("d");
queue.offer("e");
//迭代元素
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("element="+queue.element()); //返回第一个元素
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("peek="+queue.peek()); //返回第一个元素
for(String q : queue){
System.out.println(q);
}
}
}