Java ile Queue Arayüzü Anlatımı

Java ile Queue Arayüzü Anlatımı

Herkese merhabalar, bu yazımızda Java programlama dili ile FIFO(First In, First Out) prensibinin programda kullanılabilmesini sağlayan Queue arayüzünden bahsedeceğim.

Hadi başlayalım

Queue Interface nedir ?
Queue arayüzü java programlama dilinde Collections arayüzünden türetilen ve verileri işlem kuyruğunda işlenilmek üzere tutmaya yarayan bir yapıdır. Queue yapısı kullanılarak listeye eklenen elemanlar listenin en sonuna eklenir ve silinenler listenin başından silinirler. Bu sayede listeye ilk giren, ilk çıkar prensibi uygulanır ve işlem kuyruğu için veriler sıralı tutulmuş olunur.

Aşağıda Queue arayüzünün şematiği verilmiştir. Schematic Diagram of Queue Interface

Java programlama dilinde Queue bir arayüz olduğu için direk olarak nesnesi oluşturulamaz ve, başlatılabilmeleri için bir sınıfa ihtiyaç duyarlar. Queue sınıfı başlatabilmek için ProrityQueue, Linkedlist ve PriorityBlockingQueue sınıfları kullanılmaktadır. Aynı zamanda Collection'dan türetildiği için Collection a ait bütün metodlar Queue içerisindede bulunmaktadır.

Not : PriorityBlockingQueue threadsafe olduğu için multithread uygulamalarda kullanımı daha efektiftir. Bu sayede aynı anda erişimi düzenleyerek sistemin hata vermesi engellenmektedir. Diğer ProrityQueue ve Linkedlist sınıfları single thread uygulamada kullanılabilirler.

Aşağıda bir Queue arayüzünün nasıl başlatıldığı gösterilmektedir.

Queue<E> myQueue= new Linkedlist<E>();
İlk olarak aşağıdaki gerekli kütüphaneleri ekleyelim.

import java.util.Queue;
import java.util.LinkedList;

add metodu ile Queue koleksiyonuna elemanları ekliyoruz. size metodu ile o anda Queue içerisinde kaç tane elemanın olduğu bulunabilmektedir.


public static void addMethod() {
	Queue<String> theQueue = new LinkedList<>(); 
  
        theQueue.add("Burak"); 
        theQueue.add("Hamdi"); 
        theQueue.add("TUFAN"); 
        theQueue.add("The"); 
        theQueue.add("Code"); 
        theQueue.add("Program"); 
        
        System.out.println(theQueue);

        int count = theQueue.size(); 
        System.out.println("Eleman sayısı : " + count );
}
Program çıktısı aşağıdaki gibi olacaktır:

[Burak, Hamdi, TUFAN, The, Code, Program]
Eleman sayısı : 6

remove metodu ileelemanları Queue içerisinden sırası ile silabilmekteyiz. Program çıktısında görebildiğiniz üzere Queue listesine ilk eklenen eleman ilk olarak silinmiş olacaktır. Bu FIFO prensibinin uygulanması ile olmaktadır.


public static void removeMetodu() {
	Queue<String> theQueue = new LinkedList<>(); 
  
        theQueue.add("Burak"); 
        theQueue.add("Hamdi"); 
        theQueue.add("TUFAN"); 
        
        System.out.println("İlk hali : " + theQueue);
        
        String eleman = theQueue.remove();
        System.out.println("Silinen eleman : " + eleman);
        
        System.out.println("Son hali : " + theQueue);
}
Program çıktısı :

İlk hali : [Burak, Hamdi, TUFAN]                                                                                                                     
Silinen eleman : Burak                                                                                                                               
Son hali : [Hamdi, TUFAN]

peek komutu ile Queue list içerisinde sıradaki elemanı alabiliriz. peek ile elemanı alırken silemeye gerek yoktur. Remove ile eleman alınırken öncesinde silinmektedir.
Iterator ile ise liste içerisinde sırada eleman varmı diye kontrol edebilmekteyiz. Bu sayede eleman yokken işlem yapmaya çalışmayız.


public static void peekMetodu() {
	Queue<String> theQueue = new LinkedList<>(); 
  
        theQueue.add("Burak"); 
        theQueue.add("Hamdi"); 
        theQueue.add("TUFAN"); 
        
        String eleman = theQueue.peek();
        System.out.println("Sıradaki eleman : " + eleman);
        
        Iterator it = theQueue.iterator(); 
        boolean elemanVarmi = it.hasNext();
        
        theQueue.remove();
        
        eleman = theQueue.peek();
        System.out.println("Eleman varmı : " + elemanVarmi +"\nSıradaki eleman : " + eleman);
}
Program çıktısı :

Sıradaki eleman : Burak                                                                                                                              
Eleman varmı : true                                                                                                                                  
Sıradaki eleman : Hamdi

poll metodu remove gibi çalışır ve sıradaki elemanı getirir ardından elemanı Queue içerisinden kaldırır.


public static void pollMetodu() {
        Queue<String> theQueue = new LinkedList<>(); 
  
        theQueue.add("Burak"); 
        theQueue.add("Hamdi"); 
        theQueue.add("TUFAN"); 
        
        String eleman = theQueue.poll();
        System.out.println("Silinen eleman : " + eleman);
        
        System.out.println("Kuyruk : " + theQueue);
}
Program çıktısı :

Silinen eleman : Burak
Kuyruk : [Hamdi, TUFAN]
Buraya kadar genel olarak Queue Collection metodlarını incelemiş olduk. Aşağıda metodları son kez hatırlayarak yazımıza son verelim.
  • add( eleman ) : Queue içerisine bir eleman eklemek için kullanılır.
  • remove() : Queue içerisindeki sıradaki elemanı siler.
  • poll() : Queue içerisindeki sıradaki elemanı siler ve ardından değer olarak döndürür.
  • peek() : Queue içerisindeki sıradaki elemanı gösterir.
Bu yazımızda buraya kadar. Burak Hamdi TUFAN

Tags


Share this Post

Send with Whatsapp

Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

  • There is no comment. Be the owner of first comment...