线性表:多个元素的有序集合
链表:非连续的、非顺序的
Queue:理解成特殊的线性表,比方说 排队打饭,一端进、一端出,遵循先进先出原则;常用操作方法有: offer(入队)、poll(出队)、peek(返回队首元素),这里注意一下 poll 和 peek 区别: poll 删除队首元素并返回,peek返回队首元素但并不删除。
Deque: double end queue 双端队列,也就是 2端都可以 入队和出队,遵循先进后出原则;常用操作方法有:push(入队)、pop(出队)、peek(返回队首元素),这里也需要注意一下 pop 和 peek 区别:pop 删除队首元素并返回,peek返回队首元素但并不删除。
具体示例代码如下:
package queue;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
import org.junit.Test;
public class Queue1 {
/**
* queue 遵循先进先出原则,
* offer 入队, poll 出队,peek 返回队首元素,但并不删除
* note: poll and pop 删除队首元素并返回
*/
@Test
public void testQueue(){
Queue<String> queue = new LinkedList<String>();
queue.offer("a");
queue.offer("b");
queue.offer("c");
System.out.println("list:" + queue);
String poll = queue.poll();
System.out.println("poll:" + poll);
System.out.println("list:" + queue);
String peek = queue.peek();
System.out.println("peek:" + peek);
while(queue.size() > 0){
System.out.println("poll element:" + queue.poll());
}
}
/**
* Deque: double end queue, 遵循先进后出原则
* push 入队, pop 出队, peek 返回队首元素,但并不删除
* note:pop 删除队首元素并返回
*/
@Test
public void testDeque(){
Deque<String> deque = new LinkedList<String>();
deque.push("da");
deque.push("db");
deque.push("dc");
System.out.println("deque:" + deque);
String pop = deque.pop();
System.out.println("pop:" + pop);
String peek = deque.peek();
System.out.println("peek:" + peek);
while(deque.size() > 0){
System.out.println("deque pop:" + deque.pop());
}
}
}