>  기사  >  Java  >  Java 개선(Sanyi)------스택

Java 개선(Sanyi)------스택

黄舟
黄舟원래의
2017-02-11 10:17:221464검색

Java에서 Stack 클래스는 LIFO(후입선출) 객체 스택을 나타냅니다. 스택은 일반적인 선입후출 작업을 사용하여 구현되는 매우 일반적인 데이터 구조입니다. 각 스택에는 스택 상단이 포함되어 있습니다. 스택이 팝될 때마다 다음과 같이 스택 상단에 있는 데이터가 제거됩니다.

Stack은 Vector를 5가지 작업으로 확장하여 벡터를 스택으로 처리할 수 있도록 합니다. 5가지 작업은 다음과 같습니다.

                                                                                                                                                  > 설명

<strong>비어 있음</strong>()

            操作                                           说明

<strong>empty</strong>()

测试堆栈是否为空。

<strong>peek</strong>()

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

<strong>pop</strong>()

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

<strong>push</strong>(E item)

把项压入堆栈顶部。

<strong>search</strong>(Object o)

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

스택이 비어 있는지 테스트합니다.

<strong>살짝</strong>()

상단의 개체를 봅니다. 스택이지만 스택에서 제거하지는 않습니다.

<strong>팝</strong>()<span style="font-size:14px;"><span style="font-size:14px;"></span></span>

문서 상단의 개체를 제거합니다. stack 및 이 객체를 이 함수의 값으로 반환합니다.

<strong>푸시</strong>(E 항목 )

항목을 맨 위로 밀어 넣습니다. 스택의 .

<strong>검색</strong>(객체 o )

스택의 객체를 반환합니다. 포지션, 베이스 1.


Stack은 Vector를 상속하며 단순히 Vector를 확장합니다.
public class Stack<E> extends Vector<E>
    Stack 구현은 매우 간단합니다. 단 하나의 구성 방식과 5개의 구현 방식만 있습니다(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;
    }
위 내용은 Java Improvement(Sanyi)------Stack의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.