JDK源代码学习系列07----Stack
package java.util; public
class Stack<E> extends Vector<E> {
// 版本号ID。这个用于版本号升级控制,这里不须理会!
private static final long serialVersionUID = 1224463164541339165L; // 构造函数
public Stack() {
} // push函数:将元素存入栈顶
public E push(E item) {
// 将元素存入栈顶。 // addElement()的实如今Vector.java中
addElement(item); return item;
} // pop函数:返回栈顶元素,并将其从栈中删除
public synchronized E pop() {
E obj;
int len = size(); obj = peek();
// 删除栈顶元素。removeElementAt()的实如今Vector.java中
removeElementAt(len - 1); return obj;
} // peek函数:返回栈顶元素。不运行删除操作
public synchronized E peek() {
int len = size(); if (len == 0)
throw new EmptyStackException();
// 返回栈顶元素,elementAt()详细实如今Vector.java中
return elementAt(len - 1);
} // 栈是否为空<span style="font-family: verdana, arial, helvetica, sans-serif; font-size: 16px; "> </span>
public boolean empty() {
return size() == 0;
} // 查找“元素o”在栈中的位置:由栈底向栈顶方向数
public synchronized int search(Object o) {
// 获取元素索引,elementAt()详细实如今Vector.java中
int i = lastIndexOf(o); if (i >= 0) {
return size() - i;
}
return -1;
}
}
2.总结
运行peek时(即,取出栈顶元素,不运行删除),是返回数组末尾的元素。
运行pull时(即,取出栈顶元素。并将该元素从栈中删除),是取出数组末尾的元素,然后将该元素从数组中删除。
c.Stack是栈。后进先出。
版权声明:本文博主原创文章,博客,未经同意不得转载。
JDK源代码学习系列07----Stack的更多相关文章
- JDK源代码学习系列04----ArrayList
JDK源代码学习系列04----ArrayList 1 ...
- JDK源代码学习系列05----LinkedList
JDK源代码学习系列05----LinkedList 1.LinkedList简单介绍 LinkedList是基于双向 ...
- JDK源代码学习系列03----StringBuffer+StringBuilder
JDK源代码学习系列03----StringBuffer+StringBuilder 因为前面学习了StringBuffer和StringBuilder的父类 ...
- JDK源代码学习-基础类
一.概述 1.Java,是一套语言规范,例如规定了变量如何定义.控制语句如何写等,提供基本的语法规范.JDK是java自带的一套调用组件,是对基本java语法规范的进一步封装,jdk中都是使用java ...
- JDK源代码学习-ArrayList、LinkedList、HashMap
ArrayList.LinkedList.HashMap是Java开发中非常常见的数据类型.它们的区别也非常明显的,在Java中也非常具有代表性.在Java中,常见的数据结构是:数组.链表,其他数据结 ...
- 【redis 学习系列07】Redis小功能大用处01 慢查询分析以及Redis Shell
Redis提供了5种数据结构已经足够强大,但除此之外,Redis还提供了诸如慢查询分析.功能强大的Redis Shell.Pipeline.事务与Lua脚本.Bitmaps.HyperLogLog.发 ...
- 给jdk写注释系列之jdk1.6容器(10)-Stack&Vector源码解析
前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈. 什么是栈呢,我就不找它具体的定义了,直接举个例子,栈就相当于一个很窄的木桶 ...
- JDK源码学习系列05----LinkedList
JDK源码学习系列05----LinkedList 1.LinkedList简介 LinkedList是基于双向链表实 ...
- JDK源码学习系列04----ArrayList
JDK源码学习系列04----ArrayList 1. ...
随机推荐
- jquery实现菜单功能(单击展开或者关闭)-一般应用于后台
<!doctype html> <html> <head> <meta charset="gb2312"> <title> ...
- Android在onInterceptTouchEvent与onTouchEvent
onInterceptTouchEvent: onInterceptTouchEvent是在ViewGroup里面定义的.Android中的layout布局类一般都是继承此类的.onIntercept ...
- C# openfiledialog设置filter属性后达不到过滤效果的原因之一
此处用RichTextBox控件举例>>> 在窗体对应的类中处理Load事件可以为openfiledialog设置Filter的属性: private void Form1_Load ...
- Linux 核心阅读工具vim+ctags+cscope+taglist
今天.介绍vim+ctags+cscope+taglist的内核阅读配置. 当使用过之后,我相信大部分人都会舍弃之前的Eclipse(我就是活生生的一个样例).我们先来看看实现的界面是怎么样的: 我们 ...
- 可重入锁(good)
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法[即可重入],而无需重新获得锁: ...
- 命令含执行JAVA程序
1.当类没有包名时 javac Test.java java Test 2.当有包名情况下 package com.me.Test; javac -d . Test.java java com.m ...
- SE 2014年5月9日
两企业接入到 Internet(A公司和B公司),企业内部的用户及服务器均能够访问到 Internet. 2. A公司规模较大,采用了接入层/汇聚层/核心层的划分模式,接入层划分了多vLan(如图), ...
- SE 2014 年4月21日(二)
实验练习: 如图配置: 两BGP自治系统,要求建立相关BGP邻居关系 1. 建立BGP邻居关系 要求使用BGP对等体组完成(IBGP要求使用loopback接口作为TCP建立的源接口) 2. R3 R ...
- JS数组追加数组採用push.apply的坑
JS数组追加数组没有现成的函数,这么多年我已经习惯了a.push.apply(a, b);这样的自以为非常酷的,不须要写for循环的写法,一直也没遇到什么问题,直到今天我要append的b是个非常大的 ...
- SlidingMenu开源项目滑动界面的实现总结
先上图 须要准备的是先得在GitHub上下载ActionBarSherlock-master.zip,和SlidingMenu-master.zip这两个开源文件,然后解压这两个包,SlidingMe ...