java.util.Stack源码解析
来源:互联网 发布:自组织神经网络算法 编辑:程序博客网 时间:2024/05/16 16:18
1.java集合框架图
2.所属包
package java.util;
3.继承与实现关系
publicclass 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版本的
阅读全文
0 0
- java.util.Stack源码解析
- java Stack源码解析
- java.util.logging源码解析
- java.util.ArrayList源码解析
- java.util.LinkedList源码解析
- java.util.Vector源码解析
- java.util.HashSet源码解析
- java.util.HashMap源码解析
- java.util.Hashtable源码解析
- java.util.LinkedHashMap源码解析
- java.util.ArrayDeque源码解析
- java.util.TreeMap源码解析
- java.util.ArrayList源码解析
- JAVA 集合类(java.util)源码阅读笔记------Stack
- java.util.Stack翻译
- java.util.Stack
- java.util.Stack
- java.util.Stack
- 【git】fatal: unable to access 'https://github.com/top-think/framework.git/'
- 排序问题
- Android对图片进行高斯模糊
- 鱼眼图片转化位全景图片的软件以及鱼眼矫正方法
- php删除多维数组里面的值
- java.util.Stack源码解析
- linux 文件压缩解压
- MySql临时表,索引的简单介绍
- RMAN 常用命令汇总
- C#调试和错误处理(1)
- ORACLE 11gRAC 安装
- 我的Android进阶之旅------>解决Android Studio报错:DefaultAndroidProject : Unsupported major.minor version 52.0
- 让IE支持placeholder属性~
- 替换空格(java版)