Queue和Deque
程序员文章站
2024-02-11 19:27:04
...
目录
Queue
(消息队列)Queue好比排队,排在前面的人可以先买先走,队尾进,队首出。
常用方法:
方法 | 说明 |
---|---|
public boolean add(E e) | 增加数据,会抛异常 |
public boolean offer(E e) | 增加数据,成功返回true,不会抛异常 |
public E remove() | 删除数据,会抛异常 |
public E poll() | 删除数据,不会抛异常 |
LinkedList
LinkedList也是Queue的子类。
示例:
public class TestQueue {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
queue.add("1");
queue.add("2");
queue.add("4");
queue.add("5");
while(!queue.isEmpty()){
System.out.print("【"+queue.poll()+"】、");
}
}
}
结果:
【1】、【2】、【4】、【5】、
PriorityQueue
PriorityQueue是优先级队列,会根据自然顺序排序输出。
示例:
public class TestPriorityQueue {
public static void main(String[] args) {
Queue<String> queue = new PriorityQueue<>();
queue.add("a");
queue.add("B");
queue.add("A");
queue.add("1");
queue.add("9");
queue.add("C");
queue.add("x");
queue.add("G");
while(!queue.isEmpty()){
System.out.print(queue.poll()+"、");
}
}
}
结果:
1、9、A、B、C、G、a、x、 //根据ASCII码大小进行排序
Deque
Dqeue是Queue的子类,具有双向队列的功能,可以在对首或队尾添加数据或弹出数据。
ArrayDeque
示例:
public class TestDeque {
public static void main(String[] args) {
Deque<String> deque = new ArrayDeque<>();
deque.offerFirst("hello");
deque.offerLast("world");
deque.offerFirst("2020");
deque.offerLast("☆☆☆☆☆");
//返回头部元素
System.out.println(deque.peekFirst());
//返回尾部元素
System.out.println(deque.peekLast());
while(!deque.isEmpty()){
//弹出数据
System.out.print(deque.poll()+" ");
}
}
}
结果:
2020
☆☆☆☆☆
2020 hello world ☆☆☆☆☆
下一篇: STL库中的vector的使用和模拟实现