ฉันคิดว่างานเขียนของผู้เขียนดีมากจนฉันต้องบันทึกไว้
ความเข้าใจในตัวอย่างนี้:
//พารามิเตอร์ประเภทไม่สามารถใช้ประเภทพื้นฐานได้ T และ U เป็นประเภทเดียวกัน
//ทุกครั้งที่วางข้อมูลใหม่ ข้อมูลนั้นจะกลายเป็นข้อมูลด้านบนใหม่ ดันข้อมูลเดิมลงหนึ่งระดับ และสร้างลิงก์ผ่านพอยน์เตอร์
//end Sentinel เป็นโหนดที่สร้างขึ้นโดย Constructor เริ่มต้นซึ่งสอดคล้องกับ end() ที่ส่งคืนค่าจริง
คัดลอกรหัสรหัส ดังต่อไปนี้:
//: generics/LinkedStack.java
// สแต็กนำมาใช้กับโครงสร้างที่เชื่อมโยงภายใน
ยาสามัญแพ็คเกจ;
LinkedStack ระดับสาธารณะ<T> {
โหนดคลาสคงที่ส่วนตัว <U> {
คุณรายการ;
โหนด<U> ถัดไป;
โหนด () { รายการ = null; ถัดไป = null;
โหนด (รายการ U โหนด <U> ถัดไป) {
this.item = รายการ;
this.next = ถัดไป;
-
สิ้นสุดบูลีน () { รายการส่งคืน == null && ถัดไป == null;
-
โหนดส่วนตัว<T> top = โหนดใหม่<T>(); // สิ้นสุด Sentinel
โมฆะสาธารณะผลักดัน (รายการ T) {
top = โหนดใหม่ <T> (รายการ, ด้านบน);
-
สาธารณะ T ป๊อป () {
T ผลลัพธ์ = top.item;
ถ้า(!top.end())
บน = top.next;
ส่งคืนผลลัพธ์;
-
โมฆะคงที่สาธารณะ main (String [] args) {
LinkedStack<String> lss = LinkedStack ใหม่<String>();
for(String s : "Phasers on stun!".split(" "))
lss.push(s);
สตริงเอสเอส;
ในขณะที่ ((ss = lss.pop()) != null)
System.out.println(เอสเอส);
//----- หากใส่จำนวนเต็มลงใน LinkedList
LinkedStack<จำนวนเต็ม> lii = LinkedStack ใหม่<จำนวนเต็ม>();
สำหรับ(จำนวนเต็ม i = 0; i < 10; i++){
lii.push(i);
-
สิ้นสุดจำนวนเต็ม;
ในขณะที่ ((สิ้นสุด = lii.pop()) != null)
System.out.println (สิ้นสุด);
//----- สิ้นสุดการทดสอบจำนวนเต็ม!
-
-
/* เอาท์พุต:
ตะลึง!
บน
เฟสเซอร์
-