요약
벡터를 학습 한 후에는 학습 스택을 시작합니다. 스택은 간단하고 벡터에서 상속됩니다. 학습 방법은 여전히 이전과 동일합니다. 먼저, 스택에 대한 전체적인 이해를 한 다음 소스 코드를 배우십시오. 마지막으로 예제를 통해 사용하는 법을 배웁니다.
스택은 스택입니다. 그 특성은 다음과 같습니다. 첫 번째 및 마지막으로 (Filo, First in Forth Out).
Java 툴킷의 스택은 벡터 (벡터 큐)에서 상속됩니다. 벡터는 배열을 통해 구현되므로 스택은 링크 된 목록이 아닌 배열을 통해서도 구현됩니다. 물론 링크드 목록을 스택으로 사용할 수도 있습니다! "벡터에 대한 자세한 소개 (소스 코드 분석) 및 Java Collection Series 06의 사용 예제"에서 벡터의 데이터 구조가 상세하게 도입되었으며 스택의 데이터 구조는 여기에서 설명되지 않습니다.
java.lang.object
↳ java.util.abstractcollection <e>
↳ java.util.abstractlist <E>
↳ java.util.vector <e>
↳ java.util.stack <e>
공개 클래스 스택 <e>는 벡터 <e> {}을 확장합니다.
스택과 컬렉션의 관계는 다음과 같습니다.
Stack에는 다음과 같이 하나의 기본 생성자 만 있습니다.
스택()
스택의 API
스택은 스택이며 일반적으로 사용되는 API는 다음과 같습니다.
부울 빈 ()
동기화 된 e peek ()
동기화 된 E pop ()
e 푸시 (E 객체)
동기화 된 int 검색 (Object O)
벡터에서 스택 및 상속이므로 벡터의 모든 API도 포함됩니다.
Stack의 소스 코드는 매우 간단합니다. 아래에서 배우자.
패키지 java.util; publicclass stack <e>는 벡터 <e> {// 버전 ID를 확장합니다. 버전 업그레이드 컨트롤에 사용되므로 여기에주의를 기울일 필요가 없습니다! 개인 정적 최종 최종 긴 SerialVersionUID = 1224463164541339165L; // 생성자 public stack () {} // 푸시 함수 : 스택의 상단에 요소를 저장 public e push (e item) {// 스택 상단에 요소를 저장합니다. // addElement ()의 구현은 vector.java addElement (item)에 있습니다. 반품 항목; } // pop 함수 : 스택의 상단 요소를 반환하고 스택 공개 동기화 된 e pop () {e obj; int len = size (); obj = peek (); // 스택의 상단 요소를 삭제하면 removeElementat ()는 vector.java removeElementat (len -1)에 있습니다. 반환 obj; } // Peek 함수 : 삭제 작업없이 스택의 상단 요소를 반환합니다. 공개 동기화 e peek () {int len = size (); if (len == 0) 새로운 emptyStackexception ()을 던지십시오. // 스택의 상단 요소를 반환하고 elementat ()는 vector.java에서 구현됩니다. 리턴 요소 (Len -1); } // 스택이 빈 공개 부울 빈 () {return size () == 0; } // 스택에서 "요소 O"의 위치를 찾으십시오. 스택의 하단에서 스택 상단에서 공개 동기화 된 int 검색 (오브젝트 O) {// 요소 인덱스 가져 오기 elementat ()는 vector.java에서 구현됩니다. int i = lastindexof (o); if (i> = 0) {return size () -I; } 반환 -1; }} (01) 스택은 실제로 배열을 통해 구현됩니다.
푸시가 수행되면 (즉, 요소를 스택에 밀어 넣음) 배열 끝에 요소를 추가하는 것입니다.
Peek을 실행할 때 (즉, 스택의 상단 요소가 제거되고 삭제되지 않음) 배열의 끝을 반환하는 요소입니다.
팝을 실행할 때 (즉, 스택에서 상단 요소를 제거하고 스택에서 요소를 제거 할 때) 배열 끝에서 요소를 꺼내어 배열에서 요소를 삭제하는 것입니다.
(02) 스택 스택은 벡터로부터 상속되는데, 이는 벡터가 가지고있는 특성과 함수가 스택이 소유하고 있음을 의미합니다.
아래에서 우리는 예제를 통해 스택을 사용하는 방법을 배웁니다
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 (); // (int i = 1; i <6; i ++) {stack.push (String.valueof (i)); } // 스택 iteratorthroughroughroughrandomAccess (스택)를 가로 지르고 인쇄합니다. // 스택에서 "2"의 위치를 찾아 int pos = stack.search ( "2"); System.out.println ( "2의 게시물은 :"+pos); // 강아지 스택 상단 요소 후, Traverse Stack.pop (); iteratorthroughrandomAccess (스택); // 엿보기 스택 상단 요소 후 트래버스 스택 문자열 val = (문자열) stack.peek (); System.out.println ( "엿보기 :"+val); iteratorthroughrandomAccess (스택); // iterator를 통해 트래버스 스택 iteratorthroughiterator (스택); } / ** * 빠른 액세스를 통한 Traverse Stack * / public static void iteratorthroughroughroughroughrandomAccess (목록 목록) {String val = null; for (int i = 0; i <list.size (); i ++) {val = (string) list.get (i); System.out.print (val+""); } system.out.println (); } / ** * 반복자를 통한 스택 트래 싱 * / public static void iteratorthroughiterator (목록 목록) {String val = null; for (iterator iter = list.iterator (); iter.hasnext ();) {val = (string) iter.next (); System.out.print (val+""); } system.out.println (); }}실행 결과 :
1 2 3 4 5
2의 위치는 : 4입니다
1 2 3 4
엿보기 : 4
1 2 3 4
1 2 3 4