JAVA Stack 상세 소개 및 예시 학습

4568 단어 JAVAStack
1 부 Stack 은 Stack 이 창고 라 고 소개 합 니 다.그것 의 특성 은 선진 후 출(FILO,First In Last Out)이다.자바 공구 꾸러미 의 Stack 은 Vector(벡터 대기 열)에 계승 되 었 습 니 다.Vector 는 배열 을 통 해 이 루어 졌 기 때문에 Stack 도 링크 가 아 닌 배열 을 통 해 이 루어 졌 다 는 것 을 의미 합 니 다.물론 링크 드 리스트 를 스 택 으로 사용 할 수도 있 습 니 다!Stack 의 계승 관계Stack 과 Collection 의 관 계 는 다음 과 같다Stack 의 구조 함수 Stack 은 기본 구조 함수 만 있 고 다음 과 같다

Stack()
 
Stack 의 API

Stack , API :
             boolean       empty()
synchronized E             peek()
synchronized E             pop()
             E             push(E object)
synchronized int           search(Object o)
Stack 과 Vector 에 계승 되 기 때문에 Vector 의 모든 API 도 포함한다. 두 번 째 부분 Stack 소스 코드 는 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);
    }
    //
    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;
    }
}
요약:(01)Stack 도 실제 적 으로 배열 을 통 해 이 루어 진 것 이다.       push 를 실행 할 때(즉,요 소 를 스 택 에 밀어 넣 는 것)요 소 를 추가 한 배열 의 끝 에 있 습 니 다.       peek 를 실행 할 때(즉,스 택 상단 요 소 를 꺼 내 고 삭 제 를 실행 하지 않 음)배열 의 끝 을 되 돌려 주 는 요소 입 니 다.       pull 을 실행 할 때(즉,스 택 꼭대기 요 소 를 꺼 내 고 이 요 소 를 스 택 에서 삭제 합 니 다)는 배열 끝의 요 소 를 꺼 낸 다음 에 이 요 소 를 배열 에서 삭제 합 니 다.(02)Stack 은 Vector 에 계승 되 어 Vector 가 가 진 속성 과 기능 을 의미 하 며 Stack 은 모두 가지 고 있다.세 번 째 부분 Vector 예제 에서 우 리 는 인 스 턴 스 를 통 해 Stack 을 어떻게 사용 하 는 지 배 웁 니 다

import java.util.Stack;
import java.util.Iterator;
import java.util.List;
/**
 * @desc Stack 。 API
 *
 * @author skywang
 */
public class StackTest {
    public static void main(String[] args) {
        Stack stack = new Stack();
        // 1,2,3,4,5
        for(int i=1; i<6; i++) {
            stack.push(String.valueOf(i));
        }
        //
        iteratorThroughRandomAccess(stack) ;
        // “2” ,
        int pos = stack.search("2");
        System.out.println("the postion of 2 is:"+pos);
        // pup ,
        stack.pop();
        iteratorThroughRandomAccess(stack) ;
        // peek ,
        String val = (String)stack.peek();
        System.out.println("peek:"+val);
        iteratorThroughRandomAccess(stack) ;
        // Iterator Stack
        iteratorThroughIterator(stack) ;
    }
    /**
     * Stack
     */
    public static void iteratorThroughRandomAccess(List list) {
        String val = null;
        for (int i=0; i<list.size(); i++) {
            val = (String)list.get(i);
            System.out.print(val+" ");
        }
        System.out.println();
    }
    /**
     * Stack
     */
    public static void iteratorThroughIterator(List list) {
        String val = null;
        for(Iterator iter = list.iterator(); iter.hasNext(); ) {
            val = (String)iter.next();
            System.out.print(val+" ");
        }
        System.out.println();
    }
}

좋은 웹페이지 즐겨찾기