首页 / JAVA / Java集合中的数据结构双向队列
Java集合中的数据结构双向队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java集合中的数据结构双向队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3316字,纯文字阅读大概需要5分钟。
内容图文
![Java集合中的数据结构双向队列](/upload/InfoBanner/zyjiaocheng/629/c144d82da42f466795ad22be306669f5.jpg)
双向队列:与单向队列相比,双向队列在队列两端都可以进行入队和出队的操作,增加了数据的可操作性
下图为双向队列的增删操作
从上图我们可以看到,无论是队头还是队尾,都可以进行数据的增删操作,这样我们就可以根据需要对数据进行添加和删除了。但是无论是单向队列还是双向队列,都是运算受限的线性表
在java集合体系中也存在双向队列的接口Deque,下图为Collection集合的继承体系
Deque是双向队列接口,是队列Queue的子接口;是指队列两端的元素既能入队,也能出队
如果我们需要创建Deque创建实例化对象,可以通过他的子类ArrayDeque或者LinkedList(下面演示使用LinkedList)进行创建
//获取双向队列的对象,实例类可用ArrayDeque或者LinkedList
//Deque<String> deque = new ArrayDeque<String>();
Deque<String> deque = new LinkedList<String>();
同样,双向队列也是集合体系中的,依然可以通过泛型来指定存储的数据类型
1.数据的入队(添加)
既然是双向队列,那么无论是队头还是队尾都可以添加数据
void addFirst(E e)
void addLast(E e)
boolean offerFirst(E e) // 推荐替换addFirst(E e)
boolean offerLast(E e) // 推荐替换addLast(E e)
//获取双向队列的对象,实例类可用ArrayDeque或者LinkedList
//Deque<String> deque = new ArrayDeque<String>();
Deque<String> deque = new LinkedList<String>();
//添加数据
deque.addFirst("hello");
//打印一次
System.out.println(deque);//打印结果:[hello]
//从前面添加数据
deque.offerFirst("java");
//打印二次
System.out.println(deque);//打印结果:[java, hello]
//从后面添加数据
deque.offerLast("world");
//打印第三次
System.out.println(deque);//打印结果:[java, hello, world]
这里以hello为中心,我们通过打印结果可以知道,数据被分别添加到了hello的前面-java和后面-world,使用上述方式就实现了双向队列的入队了
2.数据的出队(删除)
E pollFirst() // 删除头元素并返回
E pollLast() // 删除尾元素并返回
E removeFirst() // 删除头元素并返回,但是如果队列为空,会抛出异常
E removeLast() // 删除尾元素并返回,但是如果队列为空,会抛出异常
//获取双向队列的对象,实例类可用ArrayDeque或者LinkedList
Deque<String> deque = new LinkedList<String>();
//添加数据
deque.offerFirst("hello");
deque.offerFirst("java");
deque.offerFirst("world");
//打印一次
System.out.println(deque);//打印结果:[world, java, hello]
//删除头元素
System.out.println(deque.pollFirst());//打印结果为:world
//删除后打印
System.out.println(deque);//打印结果为:[java, hello]
//删除尾元素
System.out.println(deque.pollLast());//打印结果:hello
//删除后打印
System.out.println(deque);//打印结果:[java]
对于上述的方法推荐使用poll的,防止因空队列带来的异常;
通过上面的打印结果可以看到,上述方法实现了删除队列的队头和队尾的元素并返回了被删除的元素,可根据需要调用
3.数据的获取
E getFirst()
E getLast()
E peekFirst() // 推荐替换getFirst,防止NoSuchElementExcetion
E peekLast() // 推荐替换getLast,防止NoSuchElementExcetion
//获取双向队列的对象,实例类可用ArrayDeque或者LinkedList
Deque<String> deque = new LinkedList<String>();
//添加数据
deque.offerFirst("hello");
deque.offerFirst("java");
deque.offerFirst("world");
//获取头元素
System.out.println(deque.peekFirst());//打印结果为:world
//打印队列
System.out.println(deque);//打印结果为:[world, java, hello]
//获取尾元素
System.out.println(deque.peekLast());//打印结果为:hello
//打印队列
System.out.println(deque);//打印结果为:[world, java, hello]
使用上述方法的时候,可以直接获取到头元素和尾元素,并且不会删除队列中的元素;对于删除并获取和直接获取根据需要调用
上述分享了一些关于双向队列Deque的一些常用的增删获取元素的方法,可根据需要使用
今天的分享就到这里了,如果有错误的地方,欢迎大家来指点!
内容总结
以上是互联网集市为您收集整理的Java集合中的数据结构双向队列全部内容,希望文章能够帮你解决Java集合中的数据结构双向队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。