Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

Javaالكلاس Stack في جافا

  • مقدمة
  • دوال الكلاس Stack
  • مثال شامل

مقدمة

الكلاس Stack يرث من الكلاس Vector و هو يطبق مبدأ LIFO ( Last In First Out ), أي العنصر الذي يدخل في الأخير يخرج في الأول.

بما أنه يرث من الكلاس Vector فهذا يعني أنه يملك جميع الدوال الموجودة فيه.

هنا يتم تخزين العناصر بشكل عامودي, حيث أن العناصر تترتب فيه من الأسفل إلى الأعلى.
إذاً عند إضافة عنصر ( كائن ), سيتم تخزينه في أعلى الـ Stack. و عند حذف عنصر، سيتم حذف العنصر الموجود في الأعلى أيضاً.
بما أنه لا يمكن التعامل معه إلا من الأعلى فهذا يعني أنه يمكن الوصول فقط للعنصر الموجود في أعلى الـ Stack.


ننصحك بمشاهدة هذا الفيديو حتى تفهم طريقة تخزين الكائنات و استرجاعها في الـ Stack.

دوال الكلاس Stack

الجدول التالي يحتوي على دوال الكلاس Stack.

الدالة مع تعريفها
1 public boolean empty() تفحص كائن الـ Stack لمعرفة إذا كان يحتوي على عناصر أم لا.
ترجع false في حال كان كائن الـ Stack لا يزال يحتوي على عناصر.
2 public Object peek() ترجع العنصر الموجود في أعلى كائن الـ Stack, بدون أن تحذفه.
3 public Object pop() ترجع العنصر الموجود في أعلى كائن الـ Stack, و تحذفه منه.
4 public Object push(Object element) تضع الكائن الذي نمرره لها كـ Argument في أعلى كائن الـ Stack, و ترجعه أيضاً.
5 public int search(Object element) تبحث عن الكائن الذي نمرره لها كـ Argument في جميع عناصر كائن الـ Stack.
في حال تم إيجاد تطابق, ترجع رقمه التراتبي بالنسبة للعناصر الموجودة في كائن الـ Stack.
في حال عدم إيجاد تطابق, ترجع 1-

مثال شامل

في المثال التالي قمنا بتعريف كائن نوعه Stack ثم أدخلنا فيه أربعة عناصر A - B - C - D.

بعدها قمنا بالبحث عنهم بداخل كائن الـ Stack حتى نعرف مكان وجودهم بداخله، أي كيف تم ترتيبهم.
قمنا أيضاً بالبحث عن كائنات غير موجودة في الـ Stack حتى نرى النتيجة التي ترجع لنا عند البحث عن قيمة غير موجودة فيه.

في الأخير قمنا بعرض و حذف جميع العناصر الموجودة فيه.


Main.java
import java.util.Stack;          // Stack هنا قمنا باستدعاء الكلاس
 
public class Main {
 
    public static void main(String[] args) {
 
        // s إسمه Stack هنا قمنا بتعريف كائن نوعه
        Stack s = new Stack();
 
        // s هنا قمنا بإضافة 4 عناصر في الكائن
        s.push("A");
        s.push("B");
        s.push("C");
        s.push("D");
 
        // s هنا قمنا بالبحث عن أماكن الكائنات التي أدخلناها في الكائن
        System.out.println("Search result for the object 'A': " + s.search("A"));
        System.out.println("Search result for the object 'B': " + s.search("B"));
        System.out.println("Search result for the object 'C': " + s.search("C"));
        System.out.println("Search result for the object 'D': " + s.search("D") + "\n");
 
        // -و بالتالي ستكون نتيجة البحث 1 v هنا قمنا بالبحث عن كائنات غير موجوة في الكائن
        System.out.println("Search result for the object 'X': " + s.search("X"));
        System.out.println("Search result for the object 'Y': " + s.search("Y") + "\n");
 
        System.out.println("All elements in the stack:");
 
        // ليس فارغاً. سيتم عرض و حذف كل عنصر تمر عليه s هنا أنشأنا حلقة تستمر في تكرار نفسها طالما أن الكائن
        while( !s.empty() ) {
            System.out.println(s.pop());
        }
 
    }
 
}

سنحصل على النتيجة التالية عند التشغيل.

Search result for the object 'A': 4
Search result for the object 'B': 3
Search result for the object 'C': 2
Search result for the object 'D': 1

Search result for the object 'X': -1
Search result for the object 'Y': -1

All elements in the stack:
D
C
B
A