home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / VCAFE.3.0A / Main.bin / Stack.java < prev    next >
Text File  |  1998-09-22  |  3KB  |  106 lines

  1. /*
  2.  * @(#)Stack.java    1.17 98/07/01
  3.  *
  4.  * Copyright 1995-1998 by Sun Microsystems, Inc.,
  5.  * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
  6.  * All rights reserved.
  7.  * 
  8.  * This software is the confidential and proprietary information
  9.  * of Sun Microsystems, Inc. ("Confidential Information").  You
  10.  * shall not disclose such Confidential Information and shall use
  11.  * it only in accordance with the terms of the license agreement
  12.  * you entered into with Sun.
  13.  */
  14.  
  15. package java.util;
  16.  
  17. /**
  18.  * The <code>Stack</code> class represents a last-in-first-out 
  19.  * (LIFO) stack of objects. 
  20.  *
  21.  * @author  Jonathan Payne
  22.  * @version 1.17, 07/01/98
  23.  * @since   JDK1.0
  24.  */
  25. public
  26. class Stack extends Vector {
  27.     /**
  28.      * Pushes an item onto the top of this stack. 
  29.      *
  30.      * @param   item   the item to be pushed onto this stack.
  31.      * @return  the <code>item</code> argument.
  32.      * @since   JDK1.0
  33.      */
  34.     public Object push(Object item) {
  35.     addElement(item);
  36.  
  37.     return item;
  38.     }
  39.  
  40.     /**
  41.      * Removes the object at the top of this stack and returns that 
  42.      * object as the value of this function. 
  43.      *
  44.      * @return     The object at the top of this stack.
  45.      * @exception  EmptyStackException  if this stack is empty.
  46.      * @since      JDK1.0
  47.      */
  48.     public synchronized Object pop() {
  49.     Object    obj;
  50.     int    len = size();
  51.  
  52.     obj = peek();
  53.     removeElementAt(len - 1);
  54.  
  55.     return obj;
  56.     }
  57.  
  58.     /**
  59.      * Looks at the object at the top of this stack without removing it 
  60.      * from the stack. 
  61.      *
  62.      * @return     the object at the top of this stack. 
  63.      * @exception  EmptyStackException  if this stack is empty.
  64.      * @since      JDK1.0
  65.      */
  66.     public synchronized Object peek() {
  67.     int    len = size();
  68.  
  69.     if (len == 0)
  70.         throw new EmptyStackException();
  71.     return elementAt(len - 1);
  72.     }
  73.  
  74.     /**
  75.      * Tests if this stack is empty.
  76.      *
  77.      * @return  <code>true</code> if this stack is empty;
  78.      *          <code>false</code> otherwise.
  79.      * @since   JDK1.0
  80.      */
  81.     public boolean empty() {
  82.     return size() == 0;
  83.     }
  84.  
  85.     /**
  86.      * Returns where an object is on this stack. 
  87.      *
  88.      * @param   o   the desired object.
  89.      * @return  the distance from the top of the stack where the object is]
  90.      *          located; the return value <code>-1</code> indicates that the
  91.      *          object is not on the stack.
  92.      * @since   JDK1.0
  93.      */
  94.     public synchronized int search(Object o) {
  95.     int i = lastIndexOf(o);
  96.  
  97.     if (i >= 0) {
  98.         return size() - i;
  99.     }
  100.     return -1;
  101.     }
  102.  
  103.     /** use serialVersionUID from JDK 1.0.2 for interoperability */
  104.     private static final long serialVersionUID = 1224463164541339165L;
  105. }
  106.