JAVA 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();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.