Java-da LinkedBlockingDeque


Java LinkedBlockingDeque Çox oxluBaxılıb 74

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.

Java LinkedBlockingDeque

LinkedBlockingDeque, Java-da BlockingDeque interfeysini tətbiq edən bir sinifdir. Bu hissəsidir kolleksiyaları çərçivə və mövcuddur java.util.concurrent paket. Bağlı düyünlər şəklində və ya elementləri daxili olaraq saxlayır Əlaqəli siyahı məlumat quruluşu. Bir LinkedBlockingDeque, növbə maksimum tutuma çatdıqda, yerləşdirmə əməliyyatı zamanı ipliyi bloklayır. Eynilə, növbə boş olduqda, silmə əməliyyatı zamanı bloklanır. Tutumu başqa bir konstruktorda göstərə bilərik ki, dəyəri tutumu ifadə edir Tamsayı.MAXVALUE.

Java-da LinkedBlockingDequePin

Java LinkedBlockingDeque-də qurucu

Aşağıda LinkedBlockingDeque sinifində olan konstruktorlar var

konstruktortəsvir
LinkedBlockingDeque ()Integer.MAX_VALUE kimi tutumu olan boş bir LinkedBlockingDeque yaradır
LinkedBlockingDeque (int tutumu)Müəyyən edilmiş tutumu olan boş bir LinkedBlockingDeque yaradır
LinkedBlockingDeque (Kolleksiya c)Kolleksiyada göstərilən elementlərlə bir LinkedBlockingDeque yaradır

LinkedBlockingDeque-də metodlar

LinkedBlockingDeque üsulları BlockingDeque, Deque, Collections və Abstract Collection interfeyslərindən idxal edir.

Ü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 LinkedBlockingDeque Nümunələri

Bu hissədə, LinkedBlockingDeque sinifinin metodlarından istifadə edərək müxtəlif Java nümunələrini görəcəyik.

Misal: Element əlavə edin

Bu nümunə, LinkedBlockingDeque-də mövcud olan müxtəlif metodlardan istifadə edərək elementlərin necə əlavə olunacağını göstərir. The add(), addFirst(), push(), offerFirst(), putFirst() üsulları elementi Deque əvvəlinə daxil edin. The addLast(), offerLast(), putLast(), offer()put() elementi sonuna əlavə edir.

import java.util.concurrent.*;

public class LinkedBlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    LinkedBlockingDeque<Integer> lbq = new LinkedBlockingDeque<Integer>(12);
    lbq.add(10);
    lbq.add(20);
    lbq.addFirst(30);
    lbq.addLast(40);
    System.out.println("Elements inserted using add operations: " + lbq);
    
    lbq.offer(50);
    lbq.offerFirst(60);
    lbq.offerLast(70);
    System.out.println("Elements inserted using offer operations: " + lbq);
    
    lbq.push(80);
    lbq.put(90);
    lbq.putFirst(100);
    lbq.putLast(110);
    System.out.println("Elements inserted using put operations: " + lbq);
    System.out.println("Size of LinkedBlockingDeque: " + lbq.size());
    System.out.println("Remaining capacity: " + lbq.remainingCapacity());
    

  }

}
Elements inserted using add operations: [30, 10, 20, 40]
Elements inserted using offer operations: [60, 30, 10, 20, 40, 50, 70]
Elements inserted using put operations: [100, 80, 60, 30, 10, 20, 40, 50, 70, 90, 110]
Size of LinkedBlockingDeque: 11
Remaining capacity: 1

Misal: Elementləri silin

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

import java.util.concurrent.*;

public class LinkedBlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    LinkedBlockingDeque<Integer> lbq = new LinkedBlockingDeque<Integer>(12);
    lbq.add(10);
    lbq.add(20);
    lbq.addFirst(30);
    lbq.addLast(40);
    System.out.println("Elements inserted using add operations: " + lbq);
    
    lbq.offer(50);
    lbq.offerFirst(60);
    lbq.offerLast(70);
    System.out.println("Elements inserted using offer operations: " + lbq);
    
    lbq.push(80);
    lbq.put(90);
    lbq.putFirst(100);
    lbq.putLast(110);
    System.out.println("Elements inserted using put operations: " + lbq);
    System.out.println("Size of LinkedBlockingDeque: " + lbq.size());
    System.out.println("Remaining capacity: " + lbq.remainingCapacity());
    
    System.out.println("Removing elements....");
    lbq.remove();
    lbq.remove(40);
    lbq.removeFirst();
    lbq.removeLast();
    System.out.println("Elements in queue after remove operations: " + lbq);
    
    lbq.poll();
    lbq.pollFirst();
    lbq.pollLast();
    System.out.println("Elements in queue after poll operations: " + lbq);
    
    System.out.println("Pop element: " + lbq.pop());
    System.out.println("take element: " + lbq.take());
    System.out.println("takeFirst element: " + lbq.takeFirst());
    System.out.println("takeLast element: " + lbq.takeLast());
    
    System.out.println("Elements in queue after take operations: " + lbq);
    
    

  }

}
Elements inserted using add operations: [30, 10, 20, 40]
Elements inserted using offer operations: [60, 30, 10, 20, 40, 50, 70]
Elements inserted using put operations: [100, 80, 60, 30, 10, 20, 40, 50, 70, 90, 110]
Size of LinkedBlockingDeque: 11
Remaining capacity: 1
Removing elements....
Elements in queue after remove operations: [60, 30, 10, 20, 50, 70, 90]
Elements in queue after poll operations: [10, 20, 50, 70]
Pop element: 10
take element: 20
takeFirst element: 50
takeLast element: 70
Elements in queue after take operations: []

Nümunə: Giriş elementləri

Baş və quyruq elementinə növbədən daxil olmaq üçün müxtəlif üsullar mövcuddur. Bu nümunə elementlərin necə alınacağını göstərir. The element(), getFirst(), peek(), peekFirst() üsullar baş elementini alır. The getLast(), peekLast() üsullar quyruq elementini alır.

import java.util.concurrent.*;

public class LinkedBlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    LinkedBlockingDeque<Integer> lbq = new LinkedBlockingDeque<Integer>(12);
    lbq.add(10);
    lbq.add(20);
    lbq.addFirst(30);
    lbq.addLast(40);
    System.out.println("Elements inserted using add operations: " + lbq);
    
    lbq.offer(50);
    lbq.offerFirst(60);
    lbq.offerLast(70);
    System.out.println("Elements inserted using offer operations: " + lbq);
    
    lbq.push(80);
    lbq.put(90);
    lbq.putFirst(100);
    lbq.putLast(110);
    System.out.println("Elements inserted using put operations: " + lbq);
    
    System.out.println("element output: " + lbq.element());
    System.out.println("getFirst element: " + lbq.getFirst());
    System.out.println("getLast element: " + lbq.getLast());
    System.out.println("peek element: " + lbq.peek());
    System.out.println("peekFirst element: " + lbq.peekFirst());
    System.out.println("peekLast element: " + lbq.peekLast());
    
    

  }

}
Elements inserted using add operations: [30, 10, 20, 40]
Elements inserted using offer operations: [60, 30, 10, 20, 40, 50, 70]
Elements inserted using put operations: [100, 80, 60, 30, 10, 20, 40, 50, 70, 90, 110]
element output: 100
getFirst element: 100
getLast element: 110
peek element: 100
peekFirst element: 100
peekLast element: 110

Misal: elementləri təkrarlamaq

Bu nümunə Java LinkedBlockingDeque-də elementlərdən istifadə edərək necə təkrarlanacağını göstərir iterate() metodu.

import java.util.Iterator;
import java.util.concurrent.*;

public class LinkedBlockingDequeDemo {

  public static void main(String[] args) throws InterruptedException {
    LinkedBlockingDeque<Integer> lbq = new LinkedBlockingDeque<Integer>(12);
    lbq.add(10);
    lbq.add(20);
    lbq.addFirst(30);
    lbq.addLast(40);
    System.out.println("Elements inserted using add operations: " + lbq);
    
    lbq.offer(50);
    lbq.offerFirst(60);
    lbq.offerLast(70);
    System.out.println("Elements inserted using offer operations: " + lbq);
    
    lbq.push(80);
    lbq.put(90);
    lbq.putFirst(100);
    lbq.putLast(110);
    System.out.println("Elements inserted using put operations: " + lbq);
    
    System.out.println("Iterating elements...");
    Iterator<Integer> it = lbq.iterator();
    while(it.hasNext())
      System.out.print(it.next() + " ");
    

  }

}
Elements inserted using add operations: [30, 10, 20, 40]
Elements inserted using offer operations: [60, 30, 10, 20, 40, 50, 70]
Elements inserted using put operations: [100, 80, 60, 30, 10, 20, 40, 50, 70, 90, 110]
Iterating elements...
100 80 60 30 10 20 40 50 70 90 110

 

arayış

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