正在回答
同学你好,
1、老师我明白这两个不同接口肯定是通过不同的方法进行不同数据类型的存储,我的问题是,教辅资料中并不是父类接口引用指向子类对象的方式创建对象,而是LinkedList引用指向本身LinkedList对象。它列举了两个例子,一个用add()方法存储到链表,另一个例子用push()方法存储到队列。那我在存储我需要处理的这一堆数据时这次用add,下次用push,混合使用会不会出错?还是可以正常操作,只是增删改查的方式不同而已,操作的还是同一个list集合容器吗?
混合使用并不会出错的,是可以正常操作的,但是不建议这样使用,因为这样编译一是不符合开发规范,还有就是使代码读起来不清晰。对同一个集合进行add或者push,则操作的还是同一个集合。
如:
import java.util.LinkedList; public class LinkedListTest { public static void main(String[] args) { LinkedList<String> list = new LinkedList<String>(); list.push("banana"); list.add("apple"); for(String l:list) { System.out.println(l); } } }
输出结果:
2、既然poll方法和pop方法功能都是删除且获取,为什么不只存在poll这种比较安全的方法呢?亦或者pop方法在某些情况效率比poll方法高?
因为他们底层本质使用的数据结构是不同的,poll是通过队列数据结构,而pop是通过栈的数据结构实现的,而Java中对栈描述的类已经过时了,所以栈相关方法包括在了接口Deque中。
而队列(Queue):是限定只能在表的一端进行插入和另一端删除操作的线性表
栈(Stack):是限定之能在表的一端进行插入和删除操作的线性表
同学这部分了解就可以,不需要深究哦!
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,
1、这个LinkedList是有两种存储方式吗?一种是基于链表,一种是基于队列?
是的,因为LinkedList 本身是基于链表实现的,但是又实现了 Deque接口,也就是表示支持队列的数据结构进行存储。
如:
Deque接口继承了Queue接口。
2、那怎么知道是用哪种数据结构存储数据呢?是根据所调用的增删改查方法判断,还是他们就是混在一起操作的呢?比如我调用add方法和push方法的添加是一个意思么。
这里并不是混合操作的,这里通过Deque接口实现的方法,就是通过队列的方式进行存储的,如:添加操作中的push。
而通过List接口实现的方法,就是通过链表的方式进行存储的,如add()方法。
3、pop方法和poll方法,pop是弹出队列最后加入的元素,相当于删除。而poll也是获取队列最后加入元素,并且从队列中删除。他们作用不是一样了么,都是删除且获取。
不同点在于当队列为空时,调用pop()会抛出异常,而poll()会返回null,不会抛出异常
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星