用什么来实现队列和栈
首先JAVA中有一个Queue接口,用来实现队列。Deque其实就是双端队列,代表两端都可进可出的队列。ArrayDeque就是用数组来实现这个双端队列。
(Deque由于是接口,只可以用于声明对象,但是没办法实例化,实例化还是要使用ArrayDeque类)
这时可能就会产生疑惑,队列有了,那么栈用什么来实现呢,其实在Java中栈也是用这个Deque来实现,具体实现下面会写,现在先放在一边,思考那么Java中的Stack类不就是栈吗,为什么不使用Stack来作为栈呢?这就是涉及到了一个历史遗留问题,Java中有一个Vector类,而Stack就是集成自这个Stack类,Vector现在已经基本被弃用了,因为vector所有的操作都进行了同步操作以保证线程安全,这在单线程的程序中是非常浪费时间的,所以弃用了。
如何实现
那么具体如何实现呢,因为Deque是双端队列,所以我们从两端都可以进可出。记住下列方法即可。下面论述都把对应空间想象成一个队尾在左,队头在右的队列来进行操作。
用作栈
push():在栈顶插入元素(队头插入)
pop():弹出栈顶元素(队头弹出)
peek():返回栈顶元素(返回队头)
isEmpty():判断是否尾空
用作队列
add():在队尾插入元素(offer()也可以,有细微区别)
poll():从队头弹出元素(pop()逻辑上也可以)
peek():访问队头元素
isEmpty():判断是否为空
版权归原作者 qq_52983535 所有, 如有侵权,请联系我们删除。