작가님 글이 너무 좋아서 아껴둬야 할 것 같아요.
이 예에 대한 이해:
//타입 매개변수는 기본 타입을 사용할 수 없습니다. T와 U는 실제로 동일한 타입입니다.
//새 데이터가 배치될 때마다 원래 상단을 한 단계 아래로 밀어 포인터를 통해 링크를 설정합니다.
//최종 센티널은 true를 반환하는 end()와 일치하는 기본 생성자에 의해 생성된 노드입니다.
다음과 같이 코드 코드를 복사합니다 .
//: 제네릭/LinkedStack.java
// 내부 연결 구조로 구현된 스택.
패키지 제네릭;
공개 클래스 LinkedStack<T> {
개인 정적 클래스 Node<U> {
U 항목;
Node<U> 다음;
노드() { 항목 = null; 다음 = null }
Node(U 항목, Node<U> 다음) {
this.item = 아이템;
this.next = 다음;
}
부울 end() { 반환 항목 == null && 다음 == null }
}
private Node<T> top = new Node<T>(); // 감시 종료
public void push(T 항목) {
top = new Node<T>(항목, 상단);
}
공개 T 팝() {
T 결과 = top.item;
if(!top.end())
상단 = 상단.다음;
결과 반환;
}
공개 정적 무효 메인(String[] args) {
LinkedStack<String> lss = new LinkedStack<String>();
for(String s : "페이저가 기절합니다!".split(" "))
lss.푸시(들);
문자열 SS;
while((ss = lss.pop()) != null)
System.out.println(ss);
//------ LinkedList에 정수를 넣으면
LinkedStack<Integer> lii = new LinkedStack<Integer>();
for(정수 i = 0; i < 10; i++){
lii.push(i);
}
정수 끝;
while((end = lii.pop()) != null)
System.out.println(end);
//------ 정수 테스트 끝!
}
}
/* 출력:
충격!
~에
페이저
*/