أعتقد أن كتابة المؤلف جيدة جدًا لدرجة أنني يجب أن أحفظها.
فهم هذا المثال:
// لا يمكن لمعلمات النوع استخدام الأنواع الأساسية. T وU هما في الواقع نفس النوع.
// في كل مرة يتم فيها وضع بيانات جديدة، تصبح قمة جديدة، ادفع الجزء العلوي الأصلي لأسفل بمستوى واحد وقم بإنشاء رابط من خلال المؤشر.
// حارس النهاية هو عقدة تم إنشاؤها بواسطة المُنشئ الافتراضي المتوافق مع end () الذي يُرجع صحيحًا.
انسخ رمز الكود كما يلي:
//: generics/LinkedStack.java
// مكدس تم تنفيذه ببنية داخلية مرتبطة.
حزمة الأدوية العامة؛
الطبقة العامة LinkedStack<T> {
عقدة فئة ثابتة خاصة<U> {
عنصر يو؛
العقدة<U> التالية؛
Node() { item = null;
العقدة (عنصر U، العقدة<U> التالية) {
this.item = item;
this.next = next;
}
boolean end() { return item == null && next == null };
}
Private Node<T> top = new Node<T>();
دفع الفراغ العام (عنصر T) {
top = new Node<T>(item, top);
}
عامة تي بوب () {
نتيجة T = top.item;
إذا (!top.end())
top = top.next;
نتيجة الإرجاع؛
}
public static void main(String[] args) {
LinkedStack<String> lss = new LinkedStack<String>();
for(String s : "Phasers on stun!".split(" "))
lss.push(s);
سلسلة سس؛
بينما ((ss = lss.pop()) != فارغة)
System.out.println(ss);
//----- إذا تم وضع عدد صحيح في القائمة المرتبطة
LinkedStack<Integer> lii = new LinkedStack<Integer>();
for(عدد صحيح i = 0; i < 10; i++){
lii.push(i);
}
نهاية عدد صحيح؛
بينما ((end = lii.pop()) != فارغة)
System.out.println(end);
//----- نهاية اختبار العدد الصحيح!
}
}
/* الإخراج:
صاعق!
على
المرحلة
*/