java Deque与Queue
1、二者的关系
-
Deque继承Queue
public interface Deque<E> extends Queue<E>
2、Queue接口
-
是集合框架Collection的子接口,是一种常见的数据结构,遵循先进先出的原则。基于链表来进行实现,的单向队列。LinkedList接口,实现了Queue,所以LinkedList,在插入和删除操作,效率会比较高。
poll():将队首的元素删除,并返回该元素。
peek():返回队首的元素,但不进行删除操作。
offer():将元素添加到队尾,如果成功,则返回true。
Queue的具体代码操作
Queue<String> queue=new LinkedList<>();
//追加元素
queue.offer("one");
queue.offer("two");
queue.offer("three");
queue.offer("four");
System.out.println(queue);
//从队首取出元素并删除
String poll = queue.poll();
System.out.println(poll);
System.out.println(queue);
//从队首取出元素但是不删除
String peek = queue.peek();
System.out.println(peek);
System.out.println(queue);
//遍历队列,这里要注意,每次取完元素后都会删除,整个
//队列会变短,所以只需要判断队列的大小即可
while(queue.size() > 0) {
System.out.println(queue.poll());
}
//控制台输出
// [one, two, three, four]
// one
// [two, three, four]
// two
// [two, three, four]
// two
// three
// four
3、Deque接口(双向队列)
-
Deque接口,是Queue接口的子接口,是指队列两端的元素,既能入队(offer)也能出队。
如果将Deque限制为只能从一端进行入队,和出队,就是栈的数据结构的实现。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出的规则。
add((e)\offer(e):将元素增加到队列的末尾,如果成功,返回true。
remove()\poll():将元素从队列的队首删除。
element()\peek():返回队首的元素,但不进行删除。
栈:
push(e):入栈,添加到队首
pop(e):出栈,删除队首元素
peek():返回栈首元素,但不进行删除
Deque<String> deque = new LinkedList<String>();
deque.push("a");
deque.push("b");
deque.push("c");
System.out.println("push"+deque);//push 队首添加
//获取栈首元素后,元素不会出栈
String str = deque.peek();//peek 获取队首元素,不删除
System.out.println(str);
System.out.println("peek"+deque);
String pops=deque.pop();//pop获取队首元素并删除
System.out.println(pops);
System.out.println("pop"+deque);
String ele=deque.element();//element获取队首元素,不删除
System.out.println(ele);
System.out.println("element"+deque);
String remove=deque.remove();//remove获取队首元素并删除
System.out.println(remove);
System.out.println("remove"+deque);
boolean result =deque.add("uu");//add队尾添加
System.out.println(result);
System.out.println("add"+deque);
boolean results =deque.offer("cuu");//offer队尾添加
System.out.println(results);
System.out.println("offer"+deque);
//控制台输出
// push[c, b, a]
// c
// peek[c, b, a]
// c
// pop[b, a]
// b
// element[b, a]
// b
// remove[a]
// true
// add[a, uu]
// true
// offer[a, uu, cuu]
版权声明:本文为m0_37664223原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。