Java-da növbə interfeysi


Java Java növbəsiBaxılıb 42

Java-da növbə interfeysi

Queue interface Java-da java.util-ə aiddir paketi və bir hissəsidir kolleksiya interfeys. Sıra məlumat quruluşunun First-In-First-Out konsepsiyasını tətbiq edir, ilk əlavə etdiyimiz elementlər əvvəlcə silinir. Hər hansı bir sifariş mərkəzi və ya bankomat xaricində gördüyümüz normal növbəyə bənzər növbə interfeysini nəzərdən keçirə bilərik.

Java növbəsində, elementləri arxa tərəfdən yerləşdiririk və ön tərəfdən çıxarırıq.

Java-da növbə interfeysi

Java növbəsinin xüsusiyyətləri

  • Arxa tərəfdən elementlər əlavə edir və ön tərəfdən silir
  • First In First Out (FIFO) konsepsiyasını həyata keçirir.
  • Kolleksiya interfeysinin bütün metodlarını dəstəkləyir
  • Elementlərin sifarişli bir kolleksiyasını saxlayır

Sıra iyerarxiyası

Java-da növbə interfeysiPin

Sıra interfeysinin metodları

ÜsultəsvirParametr
Mantı əlavə et (String e)Göstərilən elementi növbənin sonuna əlavə edire - əlavə ediləcək element.
Qaytarma dəyəri - Doğru
Boolean addAll (Collection c)Sıra göstərilən elementlər toplusunu əlavə edir.c - əlavə ediləcək elementlər toplusu
Qaytarma dəyəri - doğrudur
boşluq təmiz ()Növbədəki bütün elementləri təmizləyir.
Mantiq tərkibində (Nesne o) varNövbədə göstərilən elementin olub-olmadığını yoxlayırQaytarma dəyəri - növbədə element varsa, doğrudur
BooleanAll (Collection c) ehtiva edirNövbədə kolleksiyadakı bütün elementlərin olub-olmadığını yoxlayırQaytarma dəyəri - növbə bütün elementləri ehtiva edərsə doğrudur
Obyekt elementi ()Sıradakı ilk elementi (baş) qaytarır
Mantiq bərabərdir (O ​​obyekt)Növbədə göstərilən bütün elementləri dəqiq qaydada ehtiva etdiyini müqayisə edirQaytarma dəyəri - obyekt elementləri növbə ilə uyğun gəlsə doğrudur
Boole isEmpty ()Növbənin boş olub olmadığını yoxlayırQaytarma dəyəri - növbədə dəyər olmadıqda doğrudur
Təkrarlayıcı iterator ()Növbənin iteratorunu ardıcıllıqla alırQaytarma dəyəri - təkrarlayıcı
Mantı təklifi (Nesne e)Elementi quyruq kimi daxil edire - əlavə ediləcək element
Obyekt nəzərdən keçirmə ()Növbənin ilk elementini alır (baş)Növbənin boş olduğu halda sıfır qaytarır
Obyekt sorğusu ()Növbənin ilk elementini götürür və silir (baş)Növbənin boş olduğu halda sıfır qaytarır
Obyekt sil ()İlk elementi növbədən çıxarır
Mantı sil (Nesne o)Göstərilən obyektin mövcudluğunu ilk növbəni növbədən çıxarıro - Sökülməsi lazım olan element
Qaytarma dəyəri - növbədə element varsa, doğrudur
Boolean kaldırAll (Collection c)Kolleksiyadakı bütün elementlərin ilk meydana gəlməsini mövcud olduqda növbədən çıxarırc - elementlərin toplanması
Qaytarma dəyəri - növbədə kolleksiya varsa doğrudur
Boolean tutmaAll (Collection c)Koleksiyonda göstərilən bütün elementləri növbədə saxlayır. Digər elementlər silinəcəkdirc - saxlanılması lazım olan elementlər toplusu
Qaytarma dəyəri - çağırılan metod sayəsində növbə dəyişsə, doğrudur
int ölçüsü ()Növbənin ölçüsünü götürürQaytarma dəyəri - növbənin ölçüsü
Spliterator spliterator ()Növbədəki elementlərin üzərinə bir ayırıcı qaytarır
Obyekt [] toArray ()Bir sıra elementləri müvafiq ardıcıllıqla qaytarırQaytarma dəyəri - Növbədəki bütün elementlərin müvafiq ardıcıllıqla düzülməsi
String toString ()Elementlər kolleksiyasının bir Sətir təmsilini qaytarırQaytarma dəyəri - Vergül və boşluqla ayrılmış və [] daxilində olan sıra elementlərinin sətri

Sıra interfeysini tətbiq edən siniflər

Java Queue bir interfeysdir və bu səbəbdən tətbiqetmə sinifləri tələb olunur. Sıra interfeysinin tətbiqi üçün 3 sinif var: PriorityQueue, LinkedList və ArrayDeque.

Prioritet Sıra

PriorityQueue, növbəni həyata keçirən və elementləri First-In-First-Out modundan istifadə edərək prioritet əsasında işləyən bir sinifdir.

import java.util.PriorityQueue;

public class PriorityQueueExample {

  public static void main(String[] args) {
    PriorityQueue<String> p = new PriorityQueue();
    p.add("Akash");
    p.add("Aditya");
    p.add("Ashok");
    
    for(String s : p)
      System.out.println(s);
    System.out.println("First element: " + p.peek());
    
  }

}
Aditya
Akash
Ashok
First element: Aditya

Əlaqəli siyahı

Əlaqəli siyahı LinkedList məlumat quruluşuna əsaslanan çox istifadə olunan bir sıra tətbiqetmə sinifidir. Hər bir element ünvanı istifadə edərək digərinə keçid verir. Hər bir elementə bir məlumat hissəsi və bir ünvan hissəsi olan bir qovşaq deyilir. Veriləri xətti bir şəkildə saxlayır.

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

public class LinkedListQueue {

  public static void main(String[] args) {
    Queue<String> cities = new LinkedList<String>();
    cities.add("Delhi");
    cities.add("Chennai");
    cities.add("Bangalore");
    
    System.out.println(cities);
    System.out.println(Head element: " + cities.peek());

  }

}
[Delhi, Chennai, Bangalore]
Head element: Delhi

ArrayDeque

ArrayDeque sinfi, Deque interfeysini tətbiq edir, yəni elementləri hər iki tərəfdən əlavə edib silə bilərik. Heç bir tutum olmadan ölçüsünü dəyişə bilən bir sıra yaratmağımıza imkan verir.

import java.util.ArrayDeque;
import java.util.Deque;

public class ArrayDequeExample {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(100);
    d.add(200);
    d.add(300);
    d.add(400);
    d.add(500);
    
    System.out.println(d);
    
    System.out.println("Head element: " + d.peek());
    
  }

}
[100, 200, 300, 400, 500]
Head element: 100

Sıra interfeysini genişləndirən interfeyslər

Sıra interfeysi onu genişləndirən alt interfeyslər də ehtiva edir. Alt interfeyslərin siyahısı Deque, BlockingQueue və BlockingDeque.

Nə haqqında

Deque, iki uclu növbə deməkdir, yəni hər iki ucdan elementlər əlavə edib silə bilərik. ArrayDeque sinfi bu interfeysi tətbiq edir.

Deque d = new ArrayDeque();

Bloklama Sırası

BlockingQueue tətbiqetmə sinifləri, növbə siniflərindən fərqli olaraq, təhlükəsizdir. PriorityBlockingQueue, LinkedBlockingQueue, ArrayBlockingQueue bu interfeysi tətbiq edən siniflərdir.

Qadağan etmə rejimi

BlockingDeque interfeysi növbə dolduqda daxiletmə əməliyyatını bloklaya bilən və ya növbə boş olduqda silmə əməliyyatını bloklaya bilən xüsusi bir funksiyaya malikdir. Deque interfeysinin bir növü olduğu üçün hər iki ucdan da yerləşdirmə və silməyi dəstəkləyir.

Misal: Sıra elementlər əlavə edin

Aşağıda add () və addAll () metodlarından istifadə edərək növbəyə elementlər əlavə etmək üçün bir nümunə var. Add () metodundan istifadə edərək müəyyən bir element əlavə edə bilərik və addAll () metodundan istifadə edərək elementlər toplusu əlavə edə bilərik.

import java.util.PriorityQueue;
import java.util.Queue;

public class AddQueueElements {

  public static void main(String[] args) {
    Queue<String> q = new PriorityQueue<String>();
    q.add("Akshay");
    q.add("Tushar");
    q.add("Suraj");
    System.out.println("Elements in queue after add opertion: " + q);
    
    Queue<String> qu = new PriorityQueue<String>();
    qu.add("Bharat");
    qu.add("Chandru");
    
    q.addAll(qu);
    
    System.out.println("Elements in queue after addAll opertion: " + q);
  }

}
Elements in queue after add opertion: [Akshay, Tushar, Suraj]
Elements in queue after addAll opertion: [Akshay, Bharat, Suraj, Tushar, Chandru]

Nümunə: Elementləri növbədən silin

Dəyəri göstərsək, baş elementini və müəyyən bir elementi çıxarmaq üçün remove () metodundan istifadə edə bilərik. RemoveAll () metodundan istifadə edərək elementlər toplusunu silə bilərik. Növbənin baş elementini almaq və çıxarmaq üçün anket metodundan istifadə edə bilərik.

import java.util.PriorityQueue;
import java.util.Queue;

public class RemoveQueueElements {

  public static void main(String[] args) {
    Queue<String> q = new PriorityQueue<String>();
    q.add("Akshay");
    q.add("Tushar");
    q.add("Suraj");
    Queue<String> qu = new PriorityQueue<String>();
    qu.add("Bharat");
    qu.add("Chandru");
    qu.add("Kumar");
    
    q.addAll(qu);
    System.out.println("Elements in queue after add opertion: " + q);
    
    q.remove();
    q.remove("Tushar");
    
    System.out.println("Elements in the queue after remove operation: " + q);
    
    q.removeAll(qu);
    
    System.out.println("Elements in the queue after removeAll operation: " + q);
    System.out.println(q.poll());
    
    System.out.println("Is queue empty after poll method: " + q.isEmpty());

  }

}
Elements in queue after add opertion: [Akshay, Bharat, Kumar, Tushar, Chandru, Suraj]
Elements in the queue after remove operation: [Bharat, Chandru, Kumar, Suraj]
Elements in the queue after removeAll operation: [Suraj]
Suraj
Is queue empty after poll method: true

Nümunə: Elementlərə növbədə daxil olun

İterator metodundan istifadə edərək növbədəki bütün dəyərlər arasında gedə bilərik. Baş elementini almaq üçün gözləmə metodundan istifadə edə bilərik. Aşağıdakı nümunə hər iki üsulu göstərir.

import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Spliterator;

public class AccessQueueElements {

  public static void main(String[] args) {
    Queue<String> q = new PriorityQueue<String>();
    q.add("Red");
    q.add("Blue");
    q.add("Black");
    q.add("White");
    q.add("Green");
    
    System.out.println("Iterate using the iterator method: ");
    Iterator<String> i = q.iterator();
    while(i.hasNext())
      System.out.println(i.next());
    
    System.out.println("Head element: " + q.peek());
    

  }

}
Iterate using the iterator method: 
Black
Green
Blue
White
Red
Head element: Black

Nümunə: növbəni bir massivə çevirmək

ToArray metodundan istifadə edərək növbə məlumat quruluşunu bir massivə çevirə bilərik.

import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Queue;

public class QueueToArray {

  public static void main(String[] args) {
    Queue<String> q = new PriorityQueue<String>();
    q.add("Red");
    q.add("Blue");
    q.add("Black");
    q.add("White");
    q.add("Green");
    
    String arr[] = q.toArray(new String[q.size()]);
    System.out.println(Arrays.toString(arr));
    
    System.out.println("Value at index 2: " + arr[2]);

  }

}
[Black, Green, Blue, White, Red]
Value at index 2: Blue

 

arayış

Şərh yaz

Translate »
1