Java中的队列和Duque

电脑杂谈  发布时间:2020-03-26 21:06:44  来源:网络整理

java中queue的使用_java queue 数组_java的queue

三月,你不能跳吗? >>>

Deque接口继承了Queue的接口规范. LinkedList和ArrayDeque都实现Deque接口.

队列<-----杜克<----- LinkedList,ArrayDeque

队列

是常用的数据结构. 您可以将队列视为特殊的线性表. 队列限制了对线性表的访问: 您只能从线性表的一端添加(提供)元素,而从另一端轮询(元素). . 队列接口: 在java.util.Queue包中.

java的queue_java中queue的使用_java queue 数组

1)队列遵循FIFO原则: FIFO(先输入后输出)队列不支持换行. 剪线是的.

2)JDK中提供了Queue接口,而LinkedList实现了此接口(选择LinkedList来实现Queue的原因是Queue通常需要执行插入和删除操作,而LinkedList在这方面效率更高).

常用方法:

①布尔报价(E e): 将一个对象添加到团队的末尾,如果添加成功,则返回true.

②poll(): 从队列中获取一个元素,并获取最早的offer元素. 从队列中取出元素后,将从队列中删除该元素. 如果该方法返回null,则队列中没有其他元素.

java中queue的使用_java queue 数组_java的queue

③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(先输入后输出).

java queue 数组_java的queue_java中queue的使用

2)常用方法:

①推送: 推送,将数据存储在堆栈中.

②pop: 弹出,从堆栈中弹出数据.

③窥视: 将元素放在堆栈顶部,但不要删除它.

注意: 在使用pop获取栈顶元素之前,我们现在应该使用peek方法获取元素,并且仅当element不为null时才应从栈弹出元素,否则,堆栈中没有元素. 稍后,当我们调用pop时,它将引发异常“ NoSuchElementException”.

java queue 数组_java的queue_java中queue的使用

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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...