
三月,你不能跳吗? >>> 
Deque接口继承了Queue的接口规范. LinkedList和ArrayDeque都实现Deque接口.
队列<-----杜克<----- LinkedList,ArrayDeque
队列
是常用的数据结构. 您可以将队列视为特殊的线性表. 队列限制了对线性表的访问: 您只能从线性表的一端添加(提供)元素,而从另一端轮询(元素). . 队列接口: 在java.util.Queue包中.

1)队列遵循FIFO原则: FIFO(先输入后输出)队列不支持换行. 剪线是的.
2)JDK中提供了Queue接口,而LinkedList实现了此接口(选择LinkedList来实现Queue的原因是Queue通常需要执行插入和删除操作,而LinkedList在这方面效率更高).
常用方法:
①布尔报价(E e): 将一个对象添加到团队的末尾,如果添加成功,则返回true.
②poll(): 从队列中获取一个元素,并获取最早的offer元素. 从队列中取出元素后,将从队列中删除该元素. 如果该方法返回null,则队列中没有其他元素.

③peek(): 将元素放在团队负责人的位置(请勿删除此元素!)
package day0607;
import java.util.LinkedList;
import java.util.Queue;
/**
* @author Limi
* Queue 队列 先进先出
*/
public class Demo04 {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<Integer>();
for(int i=0;i<=10;i++){
queue.offer(i);
}
System.out.println(queue);
/*
* peek():获取队首的元素(不删除该元素!)
*/
System.out.println("peek():"+queue.peek());
/*
* poll():从队列中取出元素,取得的是最早的 offer 元素,从队列中取出元素后,
* 该元素会从队列中删除。若方法返回 null 说明 队列中没有元素了。
*/
Integer integer = null;
while((integer=queue.poll()) != null){
System.out.print(integer);
}
System.out.println("\npeek():"+queue.peek());
}
}
双端队列
是常用的数据结构,并且是Queue的子接口,因此LinkedList也实现了Deque接口. 堆栈将双端队列限制为仅从一端入队和出队. 对于堆栈,它是进入和退出堆栈. 项目符号夹是堆栈结构. 在包java.util.Deque下.
1)堆栈遵循先进先出的原则: FILO(先输入后输出).

2)常用方法:
①推送: 推送,将数据存储在堆栈中.
②pop: 弹出,从堆栈中弹出数据.
③窥视: 将元素放在堆栈顶部,但不要删除它.
注意: 在使用pop获取栈顶元素之前,我们现在应该使用peek方法获取元素,并且仅当element不为null时才应从栈弹出元素,否则,堆栈中没有元素. 稍后,当我们调用pop时,它将引发异常“ NoSuchElementException”.

package day0607;
import java.util.Deque;
import java.util.LinkedList;
/**
* @author Limi
* 栈 (Deque) 双端队列 先进后出
*/
public class Demo05 {
public static void main(String[] args) {
Deque<String> deque = new LinkedList<String>();
for(int i=1;i<6;i++){
deque.push(i+"");//压入,向栈中存入数据。
}
System.out.println(deque);
/*
* peek:获取栈顶位置的元素,但不取出。
* 注意事项: 我们在使用 pop 获取栈顶元素之前, 应现使用 peek 方法获取该元素,
* 确定该元素不为 null 的情况下才应该将该元素从栈中弹出” , 否则若栈中没有元
* 素后,我们调用 pop 会抛出异常“NoSuchElementException” 。
*/
while(deque.peek()!=null){
//pop:弹出,从栈中取出数据。
System.out.print(deque.pop());
}
System.out.println("\n"+deque);
}
}
ArrayDeque集合是Deque接口的实现类. 它是基于数组的双端队列. 创建双端队列时,您也可以指定numElements参数. 此参数用于指定Object []数组的长度. Deque底层数组长度为16. ArrayDeque集合可用作队列或堆栈.
1)ArrayDeque具有两个类属性,头和尾,以及两个指针.
2)ArrayDeque使用数组作为载体. 在执行诸如add之类的方法期间,数组的元素不会移动. 唯一的更改是头和尾指针,而这些指针是循环更改. 阵列容量不受限制.
3)offer方法和add方法由addLast方法实现. 每次添加元素时,该元素都会添加到数组的末尾. 这时,头部指针不会改变,并且尾部指针会增加一个java中queue的使用,因为指针是``It''. 它被添加到循环中,所以当尾部追上头部时((this.tail = this.tail + 1&this. elements.length-1)== this.head),数组的容量加倍,并且继续执行.
4)remove方法和poll方法是使用pollFirst方法实现的. 删除元素后,该元素的位置变为空. 此时,尾部指针不变java中queue的使用,而头部指针增加1. 没有数据时,将返回null.
5)因为ArrayDeque不是线程安全的,所以用作堆栈时它比Stack快,用作队列时它比LinkedList快.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-153371-1.html
一分钱没有
牢记
>3