이 예의 이해:
//유형 매개변수는 기본 유형을 사용할 수 없습니다. T와 U는 실제로 동일한 유형입니다.
//새로운 데이터를 넣을 때마다 새로운 탑이 되고, 원래 탑을 한 단계 아래로 밀어 포인터를 통해 링크를 형성합니다.
//end sentinel은 end()가 true를 반환한다는 요구 사항을 충족하는 기본 생성자에 의해 생성된 노드입니다.
//: generics/LinkedStack.java // A stack implemented with an internal linked structure. package generics; public class LinkedStack<T> { private static class Node<U> { U item; Node<U> next; Node() { item = null; next = null; } Node(U item, Node<U> next) { this.item = item; this.next = next; } boolean end() { return item == null && next == null; } } private Node<T> top = new Node<T>(); // End sentinel public void push(T item) { top = new Node<T>(item, top); } public T pop() { T result = top.item; if(!top.end()) top = top.next; return result; } public static void main(String[] args) { LinkedStack<String> lss = new LinkedStack<String>(); for(String s : "Phasers on stun!".split(" ")) lss.push(s); String ss; while((ss = lss.pop()) != null) System.out.println(ss); //----- if put integer into the LinkedList LinkedStack<Integer> lii = new LinkedStack<Integer>(); for(Integer i = 0; i < 10; i++){ lii.push(i); } Integer end; while((end = lii.pop()) != null) System.out.println(end); //----- integer test end! } } /* Output: stun! on Phasers */
Java 프로그래밍 아이디어에서 스택 클래스의 일반적인 구현과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!