JDK源代码学习系列07----Stack
1.Stack源代码很easy
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.总结

a. Stack继承自 Vector,拥有Vector的所有API.
b.Stack内部由数组实现.
运行push时(即,将元素推入栈中),是通过将元素追加的数组的末尾中。

       运行peek时(即,取出栈顶元素,不运行删除),是返回数组末尾的元素。

       运行pull时(即,取出栈顶元素。并将该元素从栈中删除),是取出数组末尾的元素,然后将该元素从数组中删除。

c.Stack是栈。后进先出




版权声明:本文博主原创文章,博客,未经同意不得转载。

JDK源代码学习系列07----Stack的更多相关文章

  1. JDK源代码学习系列04----ArrayList

                                                                             JDK源代码学习系列04----ArrayList 1 ...

  2. JDK源代码学习系列05----LinkedList

                                             JDK源代码学习系列05----LinkedList 1.LinkedList简单介绍 LinkedList是基于双向 ...

  3. JDK源代码学习系列03----StringBuffer+StringBuilder

                         JDK源代码学习系列03----StringBuffer+StringBuilder 因为前面学习了StringBuffer和StringBuilder的父类 ...

  4. JDK源代码学习-基础类

    一.概述 1.Java,是一套语言规范,例如规定了变量如何定义.控制语句如何写等,提供基本的语法规范.JDK是java自带的一套调用组件,是对基本java语法规范的进一步封装,jdk中都是使用java ...

  5. JDK源代码学习-ArrayList、LinkedList、HashMap

    ArrayList.LinkedList.HashMap是Java开发中非常常见的数据类型.它们的区别也非常明显的,在Java中也非常具有代表性.在Java中,常见的数据结构是:数组.链表,其他数据结 ...

  6. 【redis 学习系列07】Redis小功能大用处01 慢查询分析以及Redis Shell

    Redis提供了5种数据结构已经足够强大,但除此之外,Redis还提供了诸如慢查询分析.功能强大的Redis Shell.Pipeline.事务与Lua脚本.Bitmaps.HyperLogLog.发 ...

  7. 给jdk写注释系列之jdk1.6容器(10)-Stack&Vector源码解析

    前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈.      什么是栈呢,我就不找它具体的定义了,直接举个例子,栈就相当于一个很窄的木桶 ...

  8. JDK源码学习系列05----LinkedList

                                             JDK源码学习系列05----LinkedList 1.LinkedList简介 LinkedList是基于双向链表实 ...

  9. JDK源码学习系列04----ArrayList

                                                                             JDK源码学习系列04----ArrayList 1. ...

随机推荐

  1. 在web网页中正确使用图片格式

    今天又看了一遍淘宝平四分享的PPT,以前转载网址:http://blog.sina.com.cn/s/blog_995c1f6301017fd2.html

  2. php使用http请求头实现文件下载

    众所周知php对http协议的依赖特别强,像java或者asp.net在某些情况下可以不依赖http例如asp.net的winform,对php来说文件下载可以使用http的请求头加上php的IO就可 ...

  3. 温故知新-------jQuery层次选择器

    <html xmlns="http://www.w3.org/1999/xhtml">  <head>     <title></titl ...

  4. OCP读书笔记(8) - 监控和调优RMAN

    监视RMAN作业 1. 创建rman备份: RMAN> run { allocate channel ch1 type disk; allocate channel ch2 type disk; ...

  5. POJ 3340 &amp; HDU 2410 Barbara Bennett&#39;s Wild Numbers(数学)

    题目链接: PKU:http://poj.org/problem?id=3340 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2410 Descript ...

  6. Activity数据传输到服务

    activity数据接口负责启动该服务包.service获取数据.手术. 详细demo如下面: package com.example.android_service_trance; import a ...

  7. 标准输入的原理:cin与scanf

    1.cin 该方法 1)假设cin读取整数.会自己主动忽略换行和空格.遇到文件结束标记.cin  >> a返回的数false     int a;     while(cin >&g ...

  8. CC Subarray LCM (数学)

    题目连接:http://www.codechef.com/problems/SUBLCM 题意:给定一个序列,求最长连续子序列满足 LCM(Ai,Ai+1...Aj) =Ai*Ai+1*...*Aj. ...

  9. PPPOE 模拟环境搭建

    这段时间.包含我自己測试OTT盒子 PPPOE的时候比較痛苦.要不就是在别人的位置上測试.要不就是借用PPPOE的设备,认为还是自己搭建一个PPPOE真实拨号上网的环境多好! 可是坑爹的win7找不到 ...

  10. poj1655(树形dp)

    题目链接:http://poj.org/problem?id=1655 题目大意:给一个树,删除其中一个点就会形成一个森林,点的平衡度为删除了这个节点后,所形成多个树,其中组成树的节点最多,节点个数就 ...