ملخص
بعد تعلم المتجه ، سنبدأ في التعلم كومة. المكدس بسيط ، يرث من المتجه. طريقة التعلم لا تزال كما كانت من قبل. أولاً ، لديك فهم كلي للمكدس ، ثم تعلم رمز المصدر الخاص به ؛ أخيرًا تعلم استخدامه من خلال أمثلة.
المكدس هو المكدس. خصائصها هي: أولاً داخل وأخيراً (Filo ، أولاً في Last Out).
ترث مكدس في مجموعة أدوات Java من المتجه (قائمة انتظار المتجه). نظرًا لأنه يتم تنفيذ المتجه من خلال المصفوفات ، فهذا يعني أن المكدس يتم تنفيذه أيضًا من خلال المصفوفات ، وليس القوائم المرتبطة. بالطبع ، يمكننا أيضًا استخدام LinkedList كمكدس! في "مقدمة مفصلة عن المتجه (تحليل رمز المصدر) وأمثلة الاستخدام لسلسلة مجموعة Java 06" ، تم تقديم بنية بيانات المتجه بالتفصيل ، ولن يتم شرح بنية بيانات المكدس هنا.
java.lang.Object
↳ java.util.abstractCollection <e>
↳ java.util.abstractlist <e>
↳ java.Util.vector <e>
↳ java.util.stack <e>
مكدس الفئة العامة <e> يمتد المتجه <e> {}
العلاقة بين المكدس والجمع هي كما يلي:
يحتوي Stack على مُنشئ افتراضي واحد فقط ، على النحو التالي:
كومة()
API Stack
المكدس هو المكدس ، وواجهة برمجة التطبيقات (API) شائعة الاستخدام هي كما يلي:
منطقية فارغة ()
متزامن e نظرة خاطفة ()
متزامن e pop ()
e دفع (كائن e)
بحث int المتزامن (كائن O)
منذ المكدس والوراثة من المتجهات ، فإنه يحتوي أيضًا على جميع واجهات برمجة التطبيقات في المتجه.
رمز مصدر المكدس بسيط للغاية ، دعنا نتعلمه أدناه.
Package Java.Util ؛ PublicClass Stack <E> يمتد المتجه <e> {// معرف الإصدار. يتم استخدام هذا للتحكم في ترقية الإصدار ، لذلك لا تحتاج إلى الانتباه إليه هنا! استاتيكي خاص الطويل المسلسل الطويل = 1224463164541339165L ؛ // Constructor public stack () {} // push function: احفظ العناصر إلى أعلى مكدس push e push (e item) {// حفظ العناصر إلى أعلى المكدس. // تنفيذ AddElement () في Vector.java addElement (البند) ؛ عنصر الإرجاع ؛ } // pop function: repring the top element of the stack وحذفه من المكدس العام synchronized e pop () {e obj ؛ int len = size () ؛ OBJ = peEK () ؛ // حذف العنصر العلوي من المكدس ، removeElementat () في Vector.java removeElementat (Len - 1) ؛ إرجاع OBJ ؛ } // وظيفة نظرة خاطفة: إرجاع العنصر العلوي من المكدس ، دون حذف التشغيل العام متزامن e peek () {int len = size () ؛ إذا (len == 0) رمي فارغ stackexception () ؛ // إرجاع العنصر العلوي من المكدس ، يتم تنفيذ Elementat () في Vector.java. إرجاع elementat (len - 1) ؛ } // ما إذا كان المكدس فارغًا فارغًا فارغًا () {return size () == 0 ؛ } // ابحث عن موضع "Element O" في المكدس: من أسفل المكدس إلى أعلى المكدس ، Search Sexist (Object O) {// الحصول على عنصر العنصر ، يتم تطبيق Elementat () في Vector.java. int i = lastIndExof (o) ؛ if (i> = 0) {return size () - i ؛ } العودة -1 ؛ }} (01) يتم تنفيذ المكدس بالفعل من خلال المصفوفات.
عند إجراء الدفع (أي ، دفع العنصر إلى المكدس) ، فهو عن طريق إلحاق العنصر إلى نهاية الصفيف.
عند تنفيذ نظرة خاطفة (أي ، تتم إزالة العنصر العلوي على المكدس ولا يتم إجراء أي حذف) ، وهو العنصر الذي يعيد نهاية الصفيف.
عند تنفيذ POP (أي ، إخراج العنصر العلوي على المكدس وإزالة العنصر من المكدس) ، فإن إخراج العنصر في نهاية الصفيف ثم حذف العنصر من الصفيف.
(02) ترث المكدس من المتجه ، مما يعني أن كل من الخصائص والوظائف التي تمتلكها المتجه ، تمتلك Stack.
أدناه نتعلم كيفية استخدام المكدس من خلال الأمثلة
استيراد java.util.stack ؛ استيراد java.util.iterator ؛ استيراد java.util.list ؛/*** DESC Stack. اختبر استخدام واجهات برمجة التطبيقات الشائعة * * Author Skywang */Class Public Classest {public static void main (string [] args) {stack stack = new stack () ؛ // أضف 1،2،3،4،5 إلى المكدس لـ (int i = 1 ؛ i <6 ؛ i ++) {stack.push (string.valueof (i)) ؛ } // Traverse وطباعة المكدس iteratorthroughRandomAccess (stack) ؛ // ابحث عن موضع "2" في المكدس والإخراج int pos = stack.search ("2") ؛ System.out.println ("The Post of 2 IS:"+pos) ؛ // بعد عنصر Top Stack Pup ، Traverse Stack.pop () ؛ iteratorthroughRandomAccess (stack) ؛ // بعد العنصر العلوي المكدس Peek ، Traverse Stack String Val = (String) stack.peek () ؛ System.out.println ("Peek:"+Val) ؛ iteratorthroughRandomAccess (stack) ؛ // Traverse Stack iteratorThorGitterator (stack) من خلال Iterator ؛ } / ** * Traverse stack من خلال Access Access * / public static void iteratorthroughRandomAccess (قائمة قائمة) {String val = null ؛ لـ (int i = 0 ؛ i <list.size () ؛ i ++) {val = (string) list.get (i) ؛ System.out.print (Val+"") ؛ } system.out.println () ؛ } / ** * تكرار من خلال iterator * / public static void iteratorThorTourGitator (قائمة قائمة) {String val = null ؛ لـ (iterator iter = list.iterator () ؛ iter.hasnext () ؛) {val = (string) iter.next () ؛ System.out.print (Val+"") ؛ } system.out.println () ؛ }}نتائج التشغيل:
1 2 3 4 5
نشر 2 هو: 4
1 2 3 4
نظرة خاطفة: 4
1 2 3 4
1 2 3 4