集合之Stack

在Java中Stack类表示后进先出(LIFO)的对象堆栈。栈是一种非常常见的数据结构,它采用典型的先进后出的操作方式完成的。每一个栈都包含一个栈顶,每次出栈是将栈顶的数据取出,如下:

Stack通过五个操作对Vector进行扩展,允许将向量视为堆栈。这个五个操作如下:

            操作                                           说明

empty()


测试堆栈是否为空。


peek()


查看堆栈顶部的对象,但不从堆栈中移除它。


pop()


移除堆栈顶部的对象,并作为此函数的值返回该对象。


push(E item)


把项压入堆栈顶部。


search(Object o)


返回对象在堆栈中的位置,以 1 为基数。

Stack继承Vector,他对Vector进行了简单的扩展:

public class Stack<E> extends Vector<E>

Stack的实现非常简单,仅有一个构造方法,五个实现方法(从Vector继承而来的方法不算与其中),同时其实现的源码非常简单

/**     * 构造函数     */    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);    }    /**     * 栈是否为空     */    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;    }

Stack的源码很多都是基于Vector,所以这里不再累述,更多详情请参考:Java提高篇(二九)-----Vector

时间: 2024-10-25 22:09:56

集合之Stack的相关文章

C#集合之STACK

转载:http://www.cnblogs.com/wisdomforce/archive/2010/05/23/1742098.html C#集合之STACK 1.Stack定义 System.Collections.Stack类表示对象的简单的后进先出非泛型集合. 2.优点 1.后进先出的集合. 2.Stack 能接受空引用作为有效值并且允许重复的元素 3. Stack的构造器 构造器函数 注释 Stack () 初始化 Stack 类的新实例,该实例为空并且具有默认初始容量. Stack

特殊集合(stack、queue、hashtable的示例及练习)

特殊集合:stack,queue,hashtable stack:先进后出,一个一个的赋值一个一个的取值,按照顺序. .count           取集合内元素的个数 .push()         将元素一个一个推入集合中 .pop()           将元素一个个弹出集合 .clear()         清空集合 queue:先进先出,一个一个的赋值一个一个的取值,按照顺序. .count              取集合内元素的个数 .Enqueue()      进队列集合 .

集合、ArrayList 集合。Stack集合。Queue集合。以及Hashtable集合

arrayList 首先复制Colections加  : 创建arrayList ar =new arrayList(); //ArrayList al=new ArrayList();            //实例化初始化            //al.Add(4);            //真的添加            //al[0]=3;            //al[0]这种赋值方式只是修改            //Console.WriteLine(al[0]);     

java集合之Stack

Stack很简单,它继承于Vector 第1部分 Stack介绍第2部分 Stack源码解析(基于JDK1.6.0_45)第3部分 Vector示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308852.html 第1部分 Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out). java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这

2014-12-19 特殊集合:stack、queue、Hashtable

//特殊集合,栈 stack            Stack ss = new Stack();            ss.Push(3);  //向栈中插入3 Console.WriteLine(ss.Peek());  //返回最后一个进入栈的元素            Console.WriteLine(ss.Pop());  //返回并移除最后一个进入栈的元素            ss.Contains(5);  //是否包含5            ss.Clear();  //

10-23C#基础--特殊集合(stack、queue、hashtable)

特殊集合一:stack集合--堆集合 1.定义:堆集合是集合中一种特殊的类,在Stack中也有许多方法和属性,下面一一列举: 命名格式:Stack ss=new Stack(); 2.如何添加数据:push(),推,将需要的数据依次输入,一个推一个,进入Stack集合里: ss.Push("i");在添加时,括号中需要加双引号,无论是int型还是string型: 3.如何读取数据: 运用foreach循环: foreach(string s in ss)//foreach根据集合构造,

集合( Stack / Queue / Hashtable 都没有索引)

/*   // 集合     Stack         没有索引!"好比是死胡同"   Stack s=new Stack ();       //特殊集合  堆!先进后出,后进先出!   s.Push("1");                //赋值内容  要用     “”   s.Push("2"); s.Push("3"); s.Push("4"); s.Push("5");

集合,stack,queue,dictionary,ArrayList,list&lt;T&gt;

哎呀我去,昨天搞那个全排列和寻路算法搞得我脑袋都大了,忘写博了,唉 ,早起补上....... 今天的东西挺多,但没什么难度. 集合:创建和管理相关对象组的第?种?式就是:创建对象集合. 集合提供?种灵活的处理?法. 与数组不同,处理的对 象组可根据程序更改的需要动态地增?和收缩. 对于某 些集合,您可以为放?该集合的任何对象分配?个“键”, 以便使?该键快速检索对象. 注意: 集合是类,因此必须声明新集合后,才能向该集合 中添加元素.集合分为两种类型: ?泛型集合和泛型集合. 使??泛型集合的

【c#基础】集合--栈Stack 链表 LinkList 有序列表SortedList 字典

栈:是一个后进先出(LIFO)的容器 栈 push()方法在栈中添加元素,用Pop()方法获取最近添加的元素. 于Queue<T>类相似,Stack<T>类实现IEnumerable<T>和ICollection接口 Count   返回栈中的元素个数 Push    在栈顶添加一个元素 Pop 从站定删除一个元素,并返回该元素,如果栈是空的,就抛出InvalidOperationException异常 Peek    返回栈顶的元素,但不删除它 Contains 确定

java集合(二)List集合之Stack详解

Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out). java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表.当然,我们也可以将LinkedList当作栈来使用!在“Java 集合系列06之 Vector详细介绍(源码解析)和使用示例”中,已经详细介绍过Vector的数据结构,这里就不再对Stack的数据结构进行说明了. Stack的继承关系 java