Arayüz Kuyruğu java.util paketinde mevcuttur ve Koleksiyon arayüzünü genişletir. İlk Giren İlk Çıkar (FIFO) şeklinde işlenen elemanların saklanması için kullanılır. Öğelerin listenin sonunda eklendiği ve öğelerin kaldırılmasının listenin başında gerçekleştiği sıralı bir nesne listesidir.
Bir arayüz olduğundan kuyruk, bildirim için somut bir sınıf gerektirir ve en yaygın sınıflar Java'daki LinkedList ve PriorityQueue'dur. Bu sınıflar tarafından yapılan uygulamalar iş parçacığı açısından güvenli değildir. İş parçacığı açısından güvenli bir uygulamaya sahip olmak gerekiyorsa PriorityBlockingQueue kullanılabilir bir seçenektir.
Kuyruk Arayüzü Bildirimi
public interface Queue extends Collection
Java Kuyruk Arayüzü Yöntemleri
Yöntem | Tanım |
---|---|
Boolean eklentisi (nesne) | Belirtilen öğeyi bu kuyruğa eklemek ve başarı durumunda true değerini döndürmek için kullanılır. |
boolean teklifi(nesne) | Belirtilen elemanı bu kuyruğa eklemek için kullanılır. |
Nesne kaldırma() | Bu kuyruğun başını almak ve kaldırmak için kullanılır. |
Nesne yoklaması() | Bu kuyruğun başını almak ve kaldırmak için kullanılır veya bu kuyruk boşsa null değerini döndürür. |
Nesne öğesi() | Bu kuyruğun başını almak için kullanılır ancak kaldırmaz. |
Nesneye göz atma() | Bu kuyruğun başını almak için kullanılır ancak kaldırmaz veya bu kuyruk boşsa null değerini döndürür. |
Bir Kuyruğun Özellikleri
Aşağıda kuyruğun bazı önemli özellikleri verilmiştir.
- Daha önce tartışıldığı gibi, FIFO kavramı bir kuyruğa eleman eklemek ve çıkarmak için kullanılır.
- Java Kuyruğu, Koleksiyon arayüzünün silme, ekleme vb. dahil tüm yöntemleri için destek sağlar.
- PriorityQueue, ArrayBlockingQueue ve LinkedList en sık kullanılan uygulamalardır.
- BlockingQueue'larda herhangi bir boş işlem yapılırsa NullPointerException tetiklenir.
- Mevcut olan Kuyruklar faydalanmak paket Sınırsız Kuyruklar olarak bilinir.
- Mevcut olan Kuyruklar kullanışlı paket sınırlı Kuyruklar olarak bilinir.
- Deque'leri engelleyen Tüm Kuyruklar, kuyruğun başına ve kuyruğuna çıkarma ve yerleştirmeyi kolaylaştırır; sırasıyla. Aslında, deques her iki uçta da elemanın takılmasını ve çıkarılmasını destekler.
PriorityQueue Sınıfı
PriorityQueue aynı zamanda koleksiyon çerçevesinde tanımlanan ve bize nesneleri öncelik temelinde işlememiz için bir yol sağlayan sınıftır. Nesnelerin eklenmesi ve silinmesinin Java kuyruğundaki FIFO modelini takip ettiği zaten açıklanmıştır. Ancak bazen kuyruk elemanlarının önceliğe göre işlenmesi gerekebilir, burada PriorityQueue devreye girer.
PriorityQueue Sınıf Bildirimi
Java.util.PriorityQueue sınıfının bildirimine bakalım.
public class PriorityQueue extends AbstractQueue implements Serializable
Java PriorityQueue Örneği
Dosya adı: TestCollection12.java
import java.util.*; class TestCollection12{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit'); queue.add('Vijay'); queue.add('Karan'); queue.add('Jai'); queue.add('Rahul'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }Şimdi Test Edin
Çıktı:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Java PriorityQueue Örneği: Kitap
Kitapları kuyruğa eklediğimiz ve tüm kitapları yazdırdığımız bir PriorityQueue örneğini görelim. PriorityQueue'daki öğeler Karşılaştırılabilir türde olmalıdır. String ve Wrapper sınıfları varsayılan olarak Karşılaştırılabilir'dir. PriorityQueue'ya kullanıcı tanımlı nesneler eklemek için Karşılaştırılabilir arayüzü uygulamanız gerekir.
Dosya adı: LinkedListExample.java
import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } public int compareTo(Book b) { if(id>b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class linkedlistexample { static void main(string[] args) queue priorityqueue(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to the queue.add(b1); queue.add(b2); queue.add(b3); system.out.println('traversing elements:'); traversing elements for(book b:queue){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); queue.remove(); system.out.println('after removing one record:'); < pre> <p> <strong>Output:</strong> </p> <pre>Traversing the queue elements: 101 Data Communications & Networking Forouzan Mc Graw Hill 4 233 Operating System Galvin Wiley 6 121 Let us C Yashwant Kanetkar BPB 8 After removing one book record: 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <hr></b.id){>