Java中的栈和队列

java中的栈和队列

Stack 栈

栈是一个后进先出的数据结构,有这样的数据结构功能的还有Dequ类,推荐使用Dequ

push方法和pop方法

push方法是向栈顶放值

1
2
3
4
5
6
7
8
9
10
11
12
public E push(E item) {
// 这里调用父类Vector的addElement方法
addElement(item);

return item;
}
// addElement方法是加锁的方法 调用element实际上就是数组长度加一并且在该问之上付值
public synchronized void addElement(E obj) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = obj;
}

pop方法是在将栈顶的值出栈

1
2
3
4
5
6
7
8
9
10
// 同样加锁的方法 调用方法 移除在数组最后位置的元素
public synchronized E pop() {
E obj;
int len = size();

obj = peek();
removeElementAt(len - 1);

return obj;
}

peek方法

peek方法是看一下栈顶元素的值,但不做任何操作

1
2
3
4
5
6
7
public synchronized E peek() {
int len = size();

if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}

这几个方法和linkedList类中的对应的方法非常像,所以其实LindedList也可以当作栈用。

Queue 队列

队列和栈相反,是一个先进后出的数据结构,想成现实中的排队再明白不过了。

offer 方法和 pull方法

offer方法可以将元素放入队列当中,pull可以将元素从头部移除。

add方法和remove方法

add和remove方法分别调用offer和pull方法,不同的是,如果队列满了,add方法会抛出异常,而offer方法会返回null。如果队列空了,remove方法会抛出异常,而pull方法会返回null。

以后会提及队列的实现类以及Dequ相关类。

-------------本文结束感谢您的阅读-------------

本文标题:Java中的栈和队列

文章作者:NanYin

发布时间:2018年10月17日 - 22:10

最后更新:2019年08月12日 - 13:08

原始链接:https://nanyiniu.github.io/2018/10/18/2018-10-17-Java%E4%B8%AD%E7%9A%84%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。