java.util.Stack源码解析
2017-06-13 10:34
267 查看
1.java集合框架图
2.所属包
package java.util;
3.继承与实现关系
public class Stack<E> extends Vector<E>
4.准备工作
Stack类采用的是动态数组栈实现的,规则后进先出,从栈顶压入元素、从栈顶弹出元素。栈实际上是一种添加了后进先出规则的顺序表。Stack类是在Vector类的基础上进行继承并扩展功能。最好先看看Vector的源码再看Stack
java集合之Vector源码解析
属性和Vector用的是一样的
5.构造方法
/** * 创建一个栈的空构造方法 */ public Stack() { }
6.方法
push方法,将元素压入栈/** * 将元素item压入栈中 */ public E push(E item) { addElement(item); return item; } public synchronized void addElement(E obj) { modCount++; //进行扩容操作 /** * 增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。 * 如果当前数组的容量小于minCapacity,那么就增加容量,增加数组长度 * 新数组的长度等于原数组的长度加上增量capacityIncrement。 * 如果增加capacityIncrement小于等于0,那么就自动扩增为原来二倍。 * 如果扩增为原来的二倍还是比minCapacity小,那么就将minCapacity作为Object数组的长度。 */ ensureCapacityHelper(elementCount + 1); //在栈顶插入元素 elementData[elementCount++] = obj; }pop方法,从栈顶弹出元素,并且在栈中将该元素删除
/** * 从栈顶弹出元素 */ public synchronized E pop() { E obj; int len = size(); //获取栈顶元素,但是不弹出元素 obj = peek(); //删除该栈顶元素 removeElementAt(len - 1); return obj; }
peek方法,从栈中取出元素值,但是不删除栈中的值
/** * 获取下标为数组长度减一也就是最后的值,也符合栈的规则,从栈顶弹出元素 */ public synchronized E peek() { int len = size(); if (len == 0) throw new EmptyStackException(); return elementAt(len - 1); } public synchronized E elementAt(int index) { if (index >= elementCount) { throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount); } return elementData(index); } //通过索引来获取数组中对应的值 E elementData(int index) { return (E) elementData[index]; }
-------------------------------------------------该源码为jdk1.7版本的
相关文章推荐
- Jdk8集合源码解析---java.util.Stack
- 【jdk源码解析三】java.util.Hashtable
- 解析java.util集合类源码(AbstractSequentialList)
- java.util.LinkedHashMap源码解析
- Java - Stack源码解析
- Java 集合系列07之 Stack源码解析
- 解析java.util集合类源码(Collection和AbstractCollection篇)
- java.util.ArrayList源码解析
- java.util.concurrent包图文源码解析(一)——CountDownLatch
- java.util.HashMap源码解析
- java.util.ArrayDeque源码解析
- 解析java.util集合类源码(AbstractList内部类ListIterator和Itr)
- Java 集合系列 06 Stack详细介绍(源码解析)和使用示例
- java.util.concurrent包图文源码解析(二)——ReentrantLock
- Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
- 解析java.util集合类源码(ArrayList)
- 聊聊高并发(四十)解析java.util.concurrent各个组件(十六) ThreadPoolExecutor源码分析
- Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
- JAVA 集合类(java.util)源码阅读笔记------Stack
- java.util.concurrent解析——ThreadPoolExecutor源码解析