java, جاوا, ساختمان داده در جاوا

صف در جاوا (Queue Implementation In Java)

صف در جاوا

در این جلسه تیم کدگیت را با آموزش صف در جاوا همراهی کنید. این آموزش از مواردی (مثلا generic) استفاده شده که در آموزشهای قبلی گفته نشده در صورت نیاز میتوانید مطالعه کنید.پیش نیاز این جلسه شامل موارد زیر است:

  1. Generic
  2. آشنایی با if
  3. آشنایی با Array list
  4. آشنایی با متد
  5. آشنایی با شی گرایی
  6. آشنایی با this
  7. آشنایی با constructor

برای مطالعه generic میتوانید به لینک بروید و برای آموزش Arraylist میتوانید به لینک بروید. حال به توضیح صف میپردازیم.

صف

ما در فرآیندهای روزانه صف‌های زیادی میبینیم مانند صف بانک یا صف نانوایی. حال ما میخواهیم با ویژگی صف آشنا شویم و سپس به پیاده سازی آن بپردازیم.

صف دارای دو ویژگی بارز است

  1. هر نفر برای اضافه شدن به صف باید به آخر صف برود
  2. برای پاسخ به درخواست افراد درون صف به ابتدای صف مراجعه می کنید.

در جاوا برای نوع های مختلف میتوان یک صف تعریف کرد مثل String یا int یا …  و یا حتی برای Objectهایی که خودمان تعریف میکنیم و میسازیم. در این جا ما به پیاده سازی صف از جنس String میپردازیم.

در دنیای کامپیوتر صف کاربردهای زیادی دارد مثلا وقتی ما در سیستم عامل خود فرایندی(process) اجرا میکنیم سیستم عامل مقداری RAM و CPU .. در اختیار فرآیند قرار میدهد و اگر چندین فرآیند همزمان در حال اجرا باشند آنها وارد صف میشوند و به ترتیب به آنها رسیدگی میشود.

پیاده سازی صف در جاوا

یک کلاس به نام Queue(صف) داریم که به صورت زیر است.

import java.util.ArrayList;
public class Queue <E>{
     private ArrayList<E> queue;
     public Queue() {
          this.queue = new ArrayList<E>();
     }
     public void Enqueue(E object){
          queue.add(object);
     }
     public E Dequeue() {
          if (size()>0) {
              return queue.remove(0);
          }
          return null;
     }
     public int size() {
          return queue.size();
     }
     public void print() {
for (E item : queue) {
System.out.print(item+" ");
}
System.out.println();
}
}

در این کلاس از یک Arraylist برای نگه داشتن اعضای صف استفاده کردیم.

سپس یک کلاس برای تست یک صف نیاز داریم.

public class TestQueue {
     /**
      * @param args
      */
     public static void main(String[] args) {
          Queue<String> queue = new Queue<String>();
          queue.Enqueue("jack");
          queue.Enqueue("mike");
          queue.Dequeue();
          queue.Enqueue("adam");
          System.out.println(queue.Dequeue());
          System.out.println(queue.size());
     }
}

ویدئو آموزش

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *