最近正在整理一些面试的资料,希望大佬们多多指点
队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表
栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表
区别如下:
规则不同:
队列:先进先出
栈:后进先出
对插入和删除操作的限定不同:
队列:只能在表的一端进行插入,并在表得到另一端进行删除
栈:只能在表的一段进行插入和删除
遍历数据速度不同:
队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但是不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度快
栈:只能从顶部读取数据,也就是说先进入栈底的,需要遍历整个栈才能取出来,而且在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性
BlockingQueue队列和平常队列一样都可以用来作为存储数据的容器,但有时候在线程当中涉及到数据存储的时候就会出现问题,而BlockingQueue是空的话,如果一个线程要从BlockingQueue里面读取数据的话,该线程将会被阻断,并进入等待状态,直到BlockingQueue里面有数据存入了就会唤醒线程进行数据的去除。若BlockingQueue是满的,如果一个线程要将数据存入BlockingQueue,该线程将会被阻断,并进入等待状态,直到BlockingQueue里面的数据被取出有空间后,线程被唤醒后将数据存入
备注:问题整理来源于唐尤华
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。