Java-da BlockingDeque


Qadağan etmə rejimi Java Çox oxluBaxılıb 85

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Bu təlimat Java-da BlockingDeque, tətbiqetmə sinifləri, metodları və BlockingDeque-dən istifadə nümunəsini əhatə edir.

Java BlockingDeque

BlockingDeque, Koleksiyonlar çərçivəsinin bir hissəsi olan və Java'da mövcud olan bir interfeysdir java.util.concurrent paket. Deque dolduqda yerləşdirmə əməliyyatını bloklayır və boş olduqda çıxarılma əməliyyatını bloklayır. Deque olduğundan, hər iki ucdan elementlərin yerləşdirilməsini və çıxarılmasını dəstəkləyir.

BlockingDeque nümunəsi

Hiyerarşi

Java-da BlockingDequePin

BlockingDeque tətbiqetmə sinfi

Java BlockingDeque interfeysini tətbiq edən sinif LinkedBlockingDeque sinif. Daxili var Əlaqəli siyahı məlumat strukturunun təqdimatı. İşarə etdiyi başqa konstruktorda tutumu göstərsək, məhdud ola bilər Tamsayı.MAX_VALUE. 

BlockingDeque bq = new LinkedBlockingDeque();

Java BlockingDeque-də metodlar

Aşağıda BlockingDeque interfeysinin metodları verilmişdir. Ayrıca mövcud metodları da idxal edir Nə haqqındakolleksiyaları interfeys.

ÜsultəsvirParametr
Mantı əlavə et (Element e)Göstərilən elementi dekin sonuna əlavə edir. e - əlavə ediləcək element.
Qaytarma dəyəri - Doğru
Boolean addAll (Collection c)Göstərilən elementlərin kolleksiyasını dekoya əlavə edir.c - əlavə ediləcək elementlər toplusu
Qaytarma dəyəri - doğrudur
void addFirst (e elementi)Deque əvvəlinə bir element əlavə edire - daxil ediləcək element
void addLast (Element e)Dekin sonunda bir element əlavə edire - daxil ediləcək element
Mantiq tərkibində (Nesne o) varDeque-də göstərilən elementin olub-olmadığını yoxlayırQaytarma dəyəri - deque elementi ehtiva edərsə doğrudur
int drainTo (Koleksiyon c)Elementləri dekodan çıxarır və göstərilən kolleksiyaya əlavə edir
Obyekt elementi ()Dekadakı ilk elementi (baş) qaytarır
Obyekt getFirst ()Dekadakı ilk elementi (baş) qaytarır
Obyekt getLast ()Dekadakı son elementi (quyruğu) qaytarır
Təkrarlayıcı iterator ()Deque-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
Boolean təklifİlk (Nesne e)Elemanı dekanın ön hissəsinə daxil edire - əlavə ediləcək element
Boolean təklifLast (Object e)Dequ sonuna element əlavə edire - əlavə ediləcək element
Obyekt nəzərdən keçirmə ()Dekin ilk elementini alır (baş)Deque boş olduqda null qaytarır
Obyekt peekFirst ()Dekin ilk elementini alır (baş)Deque boş olduqda null qaytarır
Obyekt peekLast ()Deque (quyruq) son elementini alırDeque boş olduqda null qaytarır
Obyekt sorğusu ()Dekin ilk elementini alır və çıxarır (baş)Deque boş olduqda null qaytarır
Obyekt sorğusu Birincisi ()Dekin ilk elementini alır və çıxarır (baş)Deque boş olduqda null qaytarır
Obyekt sorğusu Son ()Deque (quyruq) son elementini alır və çıxarır.Deque boş olduqda null qaytarır
Nesne pop ()İlk elementi deque yığından alır və ya götürür
ləğv etmə (obyekt e)Elemanı dekanın ön hissəsinə daxil edire - əlavə ediləcək element
etibarsız qoymaq (obyekt e)Göstərilən elementi dekoya daxil edire - daxil ediləcək element
void putFirst (Object e)Göstərilən elementi dekanın əvvəlinə daxil edire - daxil ediləcək element
void putLast (Object e)Göstərilən elementi dekanın sonuna daxil edire - daxil ediləcək element
Obyekt sil ()İlk elementi dekodan çıxarır
Mantı sil (Nesne o)Göstərilən obyektin mövcud olacağı təqdirdə ilk meydana gəlməsini dekodan çıxarıro - Sökülməsi lazım olan element
Qaytarma dəyəri - deque elementi ehtiva edərsə doğrudur
Obyekt removeFirst ()Deque'nin ilk elementini çıxarır
Boolean removeFirstOccurence (Object e)Deque-də göstərilən elementin ilk meydana gəlməsini aradan qaldırıre - çıxarılacaq element
Obyekt çıxarışLast ()Son elementi dekodan çıxarır
Boolean removeLastOccurence (Nesne e)Göstərilən elementin son meydana gəlməsini dekodan çıxarıre - çıxarılacaq element
int ölçüsü ()Deque ölçüsünü alırQaytarma dəyəri - deque ölçüsü
Element almaq ()Baş elementini dekodan alır və çıxarırQaytarma dəyəri - dekodan çıxarılan baş element
Element takeFirst ()İlk elementi dekdən alır və çıxarırQaytarma dəyəri - dekodan çıxarılan ilk element
Element takeLast ()Son elementi dekodan çıxarırQaytarma dəyəri - dekoda mövcud olan son element

Java BlockingDeque Nümunəsi

İndi aşağıdakı hissədə BlockingDeque metodlarının müxtəlif nümunələrini nəzərdən keçirək.

Misal: Elementləri daxil edin

Aşağıdakı nümunə Java-da BlockingDeque-də müxtəlif metodlardan istifadə edərək elementlərin necə əlavə olunacağını göstərir. The addFirst(), offerFirst(), putFirst()push() elementləri dekanın əvvəlinə əlavə edir.

import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

public class BlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    BlockingDeque<String> bq = new LinkedBlockingDeque<String>();
    System.out.println("Inserting elements...");
    bq.add("Apple");
    bq.add("Banana");
    bq.addFirst("Watermelon");
    bq.addLast("Pineapple");
    System.out.println("Elements inserted using add operations: " + bq);
    
    bq.offer("Lemon");
    bq.offerFirst("Orange");
    bq.offerLast("Sapota");
    System.out.println("Elements inserted using offer operations: " + bq);
    
    bq.push("Grapes");
    System.out.println("Element inserted using push operation: " + bq);
    
    bq.put("Mosambi");
    bq.putFirst("Guava");
    bq.putLast("Papaya");
    System.out.println("Elements inserted using put operations: " + bq);
  }

}
Inserting elements...
Elements inserted using add operations: [Watermelon, Apple, Banana, Pineapple]
Elements inserted using offer operations: [Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota]
Element inserted using push operation: [Grapes, Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota]
Elements inserted using put operations: [Guava, Grapes, Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota, Mosambi, Papaya]

Misal: Elementləri silin

Aşağıdakı nümunə, müxtəlif metodlardan istifadə edərək elementlərin BlockingDeque-dən necə çıxarılacağını göstərir. The remove(), removeFirst(), pollFirst()takeFirst() üsullar ilk baş elementi növbədən çıxarır və çıxarır. The removeLast(), pollLast(), takeLast() üsullar son elementi növbədən çıxarır və çıxarır.

import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

public class BlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    BlockingDeque<String> bq = new LinkedBlockingDeque<String>();
    System.out.println("Inserting elements...");
    bq.add("Apple");
    bq.add("Banana");
    bq.addFirst("Watermelon");
    bq.addLast("Pineapple");
    System.out.println("Elements inserted using add operations: " + bq);
    
    bq.offer("Lemon");
    bq.offerFirst("Orange");
    bq.offerLast("Sapota");
    System.out.println("Elements inserted using offer operations: " + bq);
    
    bq.push("Grapes");
    System.out.println("Element inserted using push operation: " + bq);
    
    bq.put("Mosambi");
    bq.putFirst("Guava");
    bq.putLast("Papaya");
    System.out.println("Elements inserted using put operations: " + bq);
    
    System.out.println("\n Removing elements...");
    bq.remove();
    bq.remove("Lemon");
    bq.removeFirst();
    bq.removeLast();
    System.out.println("Elements after remove operations: " + bq);
    
    System.out.println("Poll element: " + bq.poll());
    System.out.println("PollFirst element: " + bq.pollFirst());
    System.out.println("PollLast element: " + bq.pollLast());
    System.out.println("Elements after poll operations: " + bq);
    
    System.out.println("Pop element: " + bq.pop());
    System.out.println("Take element: " + bq.take());
    System.out.println("TakeFirst element: " + bq.takeFirst());
    System.out.println("TakeLast element: " + bq.takeLast());
    System.out.println("Elements after take operations: " + bq);
    
  }

}
Inserting elements...
Elements inserted using add operations: [Watermelon, Apple, Banana, Pineapple]
Elements inserted using offer operations: [Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota]
Element inserted using push operation: [Grapes, Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota]
Elements inserted using put operations: [Guava, Grapes, Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota, Mosambi, Papaya]

 Removing elements...
Elements after remove operations: [Orange, Watermelon, Apple, Banana, Pineapple, Sapota, Mosambi]
Poll element: Orange
PollFirst element: Watermelon
PollLast element: Mosambi
Elements after poll operations: [Apple, Banana, Pineapple, Sapota]
Pop element: Apple
Take element: Banana
TakeFirst element: Pineapple
TakeLast element: Sapota
Elements after take operations: []

Nümunə: Giriş elementləri

Aşağıdakı nümunə, müxtəlif üsullardan istifadə edərək BlockingDeque-in baş və quyruq elementlərinə necə çatacağını göstərir. Element (), peekFirst()getFirst() üsullar baş elementini alır. The peekLast()getLast() üsullar quyruq elementini alır.

import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

public class BlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    BlockingDeque<String> bq = new LinkedBlockingDeque<String>();
    System.out.println("Inserting elements...");
    bq.add("Apple");
    bq.add("Banana");
    bq.addFirst("Watermelon");
    bq.addLast("Pineapple");
    System.out.println("Elements inserted using add operations: " + bq);
    
    bq.offer("Lemon");
    bq.offerFirst("Orange");
    bq.offerLast("Sapota");
    System.out.println("Elements inserted using offer operations: " + bq);
    
    bq.push("Grapes");
    System.out.println("Element inserted using push operation: " + bq);
    
    bq.put("Mosambi");
    bq.putFirst("Guava");
    bq.putLast("Papaya");
    System.out.println("Elements inserted using put operations: " + bq);
    
    System.out.println("Element result: " + bq.element());
    System.out.println("getFirst element: " + bq.getFirst());
    System.out.println("getLast element: " + bq.getLast());
    System.out.println("Peek element: " + bq.peek());
    System.out.println("PeekFirst element: " + bq.peekFirst());
    System.out.println("PeekLast element: " + bq.peekLast());
    
  }

}
Inserting elements...
Elements inserted using add operations: [Watermelon, Apple, Banana, Pineapple]
Elements inserted using offer operations: [Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota]
Element inserted using push operation: [Grapes, Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota]
Elements inserted using put operations: [Guava, Grapes, Orange, Watermelon, Apple, Banana, Pineapple, Lemon, Sapota, Mosambi, Papaya]
Element result: Guava
getFirst element: Guava
getLast element: Papaya
Peek element: Guava
PeekFirst element: Guava
PeekLast element: Papaya

Misal: elementləri təkrarlamaq

Istifadə iterator() üsulu ilə, BlockingDeque’də hər elementdən keçə bilərik. Bunun üçün İteratorun bir nümunəsini yaratmalı və sonra next() a daxilində üsul döngə zamanı, hər bir elementi geri ala bilərik.

import java.util.Iterator;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

public class BlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    BlockingDeque<String> bq = new LinkedBlockingDeque<String>();

    bq.add("Apple");
    bq.add("Banana");
    bq.addFirst("Watermelon");
    bq.addLast("Pineapple");
    
    bq.offer("Lemon");
    bq.offerFirst("Orange");
    bq.offerLast("Sapota");
    
    bq.push("Grapes");
    
    bq.put("Mosambi");
    bq.putFirst("Guava");
    bq.putLast("Papaya");
    
            	System.out.println("Iterating elements...");
    Iterator<String> it = bq.iterator();
    while(it.hasNext())
      System.out.print(it.next() + " ");
    
    
  }

}
Iterating elements...
Guava Grapes Orange Watermelon Apple Banana Pineapple Lemon Sapota Mosambi Papaya

 

arayış

Crack Sistemi Dizayn Müsahibələri
Translate »
1