栈是先进后出的数据结构,队列是先进先出的结构。这俩个数据结构其实可以看作是特殊的
数组,数组可以在任何一个位置存取元素,而栈相当于只能通过要么左边一端要么右边一端存取
元素的数组,队列相当于只能通过左边一端存元素右边一端取元素,或者左边一端取元素右边一端存元素的数组。有了这层物理限制,就可以很好的理解"先进后出"以及"先进先出"的含义了
java语言中队列接口Queue定义了4个方法:
int size()
boolean add(T)/boolean offer(T)
T remove()/T pool()
T element()/T peek()
其中前面的添加/删除/获取元素失败会抛出异常,后面的则是返回false或null
java语言中实现Queue接口的类有很多,常见的比如LinkedList:
Queue<int> q = new LinkedList<>();
java语言中栈是通过Deque接口来实现的,Deque接口本身实现的是一个双端队列(就是俩边
可以同时存取元素的队列),由于历史原因java语言本身没有提供Stack的接口。Deque接口
关于栈定义了3个方法:
boolean push(T)
T pop()
T peek()