Deque Java- ում



Դիկե Java

Deque ինտերֆեյսը Java- ում

Deque- ը Java- ում ինտերֆեյս է, որը տարածում է հերթ ինտերֆեյս Դա նշանակում է կրկնակի վերջի հերթ, ինչը նշանակում է, որ մենք կարող ենք երկու կողմերից էլեմենտներ տեղադրել և ջնջել: Այն աջակցում է ինչպես հերթի իրականացմանը, որն առաջինն է առաջինից դուրս (FIFO), այնպես էլ խմբաքանակի իրականացմանը, որը վերջինն է առաջինից դուրս վիճակում (LIFO): Դիկե ինտերֆեյս java.util- ի մի մասն է փաթեթ և պատկանում է հավաքածու ծրագրի շրջանակներում:

Deque հիերարխիա

Deque Java- ում

Deque- ի առանձնահատկությունները Java- ում

  • Deque- ը Java- ում իրականացնում է ինչպես FIFO, այնպես էլ LIFO
  • Դա դինամիկորեն փոխվող զանգված է
  • Մենք չենք կարող զրոյական արժեքներ պահպանել Deque- ում
  • Լռելյայն այն անվտանգ չէ շղթայից:

Deque Java- ում

Դասեր, որոնք Java- ում իրականացնում են Deque ինտերֆեյսը

Ստորև բերված են Deque ինտերֆեյսն իրականացնող դասերը.

  • LinkedList- ը:
    Deque<Type> d = new LinkedList<Type>();
  • ArrayDeque:
    Deque<Type> d = new ArrayDeque<Type>();
    

     

Deque- ի մեթոդները Java- ում

ՄեթոդՆկարագրությունParameter
Boolean ավելացնել (Element e)Նշված տարրը ավելացնում է deque- ի վերջում: ե - ավելացվող տարրը:
Վերադարձի արժեք - ueիշտ է
Boolean addAll (հավաքածու c)Deque- ին ավելացնում է նշված տարրերի հավաքածու:գ - ավելացվող տարրերի հավաքածու
Վերադարձի արժեքը `ճշմարիտ
անվավեր ավելացնել Առաջին (Element e)Տեղադրում է տարրը դեկեի սկզբումե - տեղադրվող տարրը
անվավեր addLast (Element e)Տեղադրում է տարրը դեկեի վերջումե - տեղադրվող տարրը
անվավեր պարզ ()Մաքրում է deque- ի բոլոր տարրերը:
Boolean պարունակում է (օբյեկտ o)Ստուգում է `արդյոք deque- ն պարունակում է նշված տարրըՎերադարձի արժեքը `ճիշտ է, եթե deque- ն պարունակում է տարրը
Բուլյան պարունակությունը բոլորը (հավաքածու գ)Ստուգում է `արդյոք deque- ն պարունակում է հավաքածուի բոլոր տարրերըՎերադարձի արժեքը `ճիշտ է, եթե deque- ն պարունակում է բոլոր տարրերը
Iterator իջնող Iterator ()Հակադարձ հերթականությամբ վերադարձնում է կրկնիչը deque- ի տարրերի վրա
Օբյեկտի տարր ()Վերադարձնում է առաջին տարրը (գլուխը) deque- ում
Բուլյան հավասար է (օբյեկտ o)Համեմատում է, եթե deque- ն պարունակում է նշված բոլոր տարրերը ճշգրիտ հերթականությամբՎերադարձի արժեքը `ճիշտ է, եթե օբյեկտի տարրերը համընկնում են deque- ի հետ
Object getFirst ()Վերադարձնում է առաջին տարրը (գլուխը) deque- ում
Օբյեկտ getLast ()Վերադարձնում է վերջին տարրը (պոչը) deque- ում
Boolean- ը դատարկ է ()Ստուգում է ՝ deque- ն դատարկ է, թե ոչՎերադարձի արժեքը `ճիշտ է, եթե deque- ն արժեքներ չի պարունակում
Iterator iterator ()Հերթականությամբ առբերում է deque- ի կրկնիչըՎերադարձի արժեք - Iterator
Բուլյան առաջարկ (օբյեկտ ե)Տեղադրում է տարրը որպես պոչe - ավելացվող տարրը
Բուլյան առաջարկ Առաջինը (օբյեկտ ե)Տեղադրում է տարրը դեկեի առջևումe - ավելացվող տարրը
Բուլյան առաջարկ Վերջին (առարկա e)Տեղադրում է տարրը դեկեի վերջումe - ավելացվող տարրը
Օբյեկտի հայացք ()Առբերում է դեկի առաջին տարրը (գլուխ)Վերադառնում է զրոյի, եթե deque- ն դատարկ է
Օբյեկտի հայացք Առաջին ()Առբերում է դեկի առաջին տարրը (գլուխ)Վերադառնում է զրոյի, եթե deque- ն դատարկ է
Object peekLast ()Առբերում է deque- ի վերջին տարրը (պոչ)Վերադառնում է զրոյի, եթե deque- ն դատարկ է
Օբյեկտների հարցում ()Առբերում և հեռացնում է դեկի առաջին տարրը (գլուխը)Վերադառնում է զրոյի, եթե deque- ն դատարկ է
Օբյեկտների հարցում Առաջին ()Առբերում և հեռացնում է դեկի առաջին տարրը (գլուխը)Վերադառնում է զրոյի, եթե deque- ն դատարկ է
Օբյեկտի հարցումՎերջին ()Առբերում և հեռացնում է դեկի (պոչի) վերջին տարրըՎերադառնում է զրոյի, եթե deque- ն դատարկ է
Օբյեկտի փոփ ()Վերականգնում կամ հեռացնում է առաջին տարրը դեկեի կույտից
անվավեր մղում (օբյեկտ ե)Տեղադրում է տարրը դեկեի առջևումե - ավելացվող տարրը
Օբյեկտի հեռացում ()Հեռացնում է առաջին տարրը դիկեից
Բուլյան հեռացում (օբյեկտ o)Առկայության դեպքում հեռացնում է նշված օբյեկտի առաջին առաջացումըo - Այն տարրը, որը պետք է հեռացվի
Վերադարձի արժեքը `ճիշտ է, եթե deque պարունակում է տարրը
Boolean removeAll (հավաքածու c)Հավաքածուի բոլոր տարրերի առաջին դեպքը հեռացնում է deque- ից, եթե առկա էգ - տարրերի հավաքածու
Վերադարձի արժեքը `ճիշտ է, եթե deque- ն պարունակում է հավաքածու
Օբյեկտի հեռացում Առաջին ()Հեռացնում է դեկեի առաջին տարրը
Բուլյան հեռացում Առաջին աքցյուրենցիան (օբյեկտ e)Հեռացնում է deque- ում նշված տարրի առաջին առաջացումըե - հեռացվող տարրը
Օբյեկտի հեռացում Վերջին ()Հեռացնում է վերջին տարրը դիկեից
Boolean removeLastOccurence (օբյեկտ e)Հեռացնում է նշված տարրի վերջին առաջացումը deque- իցե - հեռացվող տարրը
Boolean retainAll (հավաքածու c)Հավաքածուի մեջ նշված բոլոր տարրերը պահում է գաղտնի: Այլ տարրերը կհեռացվենգ - տարրերի հավաքածու, որը պետք է պահպանվի
Վերադարձի արժեքը `ճիշտ է, եթե deque- ն փոխվել է կոչված մեթոդի պատճառով
int չափը ()Ստանում է դեկեի չափըՎերադարձի արժեքը `deque- ի չափը
Օբյեկտ [] toArray ()Պատշաճ հաջորդականությամբ վերադարձնում է տարրերի զանգվածՎերադարձի արժեք - բոլոր հաջորդականությունների զանգվածը պատշաճ հաջորդականությամբ
String toString ()Վերադարձնում է տարրերի հավաքածուի տողի ներկայացումըՎերադարձի արժեք - զանգվածի տարրերի տողը բաժանված է ստորակետով և տարածությամբ և կցված է []

Օրինակ. Տեղադրեք տարրեր Deque- ում

Java- ում կան տարրեր deque- ում տեղադրելու մի քանի մեթոդներ: Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես կարելի է տարրեր տեղադրել բոլոր մեթոդներով: Add () և առաջարկ () մեթոդները տարրեր են ներմուծում սովորական հերթականությամբ: AddFirst (), offerFirst () և push () մեթոդները արժեք են ներդնում deque- ի առաջինի համար: Օգտագործելով addLast () և առաջարկLast () մեթոդները, մենք կարող ենք տարրեր ներդնել deque- ի վերջում: Էլեմենտների հավաքածու ավելացնելու համար մենք կարող ենք օգտագործել addAll () մեթոդը:

import java.util.Deque;
import java.util.LinkedList;

public class InsertDequeElements {

  public static void main(String[] args) {
    Deque<String> d = new LinkedList<String>();
    d.add("C");
    d.addFirst("C++");
    d.addLast("Java");
    
    System.out.println("Elements in the Deque after add, addFirst and addLast: " + d);
    
    Deque<String> dq = new LinkedList<String>();
    dq.add("JavaScript");
    dq.add("Python");
    
    d.addAll(dq);
    
    System.out.println("Elements in the Deque after addAll: " + d);
    
    d.offer(".Net");
    d.offerFirst("C#");
    d.offerLast("VBScript");
    
    System.out.println("Elements in the Deque after offer, offerFirst and offerLast: " + d);
    
    d.push("HTML");
    
    System.out.println("Elements in the Deque after push: " + d);

  }

}

Օրինակ. Deque- ից տարրեր ջնջեք

Addավայում deque- ն աջակցում է տարբեր լրացման գործողությունների, ինչպես նաև ջնջելու մի քանի գործողություններ, որոնք մանրամասն ներկայացված են ստորև բերված օրինակում: Հեռացնել () և հարցում () մեթոդները ջնջում են տարրը դեկեի սկզբից: RemoveFirst (), pollFirst () և pop () մեթոդները հեռացնում են առաջին տարրը: Վերջին տարրը հեռացնելու համար մենք կարող ենք օգտագործել removeLast () և pollLast () մեթոդները: Մենք կարող ենք նաև հեռացնել տարրերի հավաքածուն ՝ removeAll () մեթոդի միջոցով: RetainAll () մեթոդը պահպանում է միայն տարրերի հավաքածուն, իսկ մյուսները ջնջում է deque- ից:

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

public class DeleteDequeElements {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    d.add(40);
    d.add(200);
    d.add(300);
    
    Deque<Integer> dq = new ArrayDeque<Integer>();
    dq.add(70);
    dq.add(60);
    dq.add(80);
    dq.add(90);
    dq.add(100);
    
    d.addAll(dq);
    
    System.out.println("Elements in the Deque: " + d);
    
    d.remove();
    d.remove(50);
    
    System.out.println("Elements after remove: " + d);
    
    d.removeFirst();
    d.removeLast();
    
    System.out.println("Elements after removeFirst and removeLast: " + d);
    
    d.poll();
    d.pollFirst();
    d.pollLast();
    
    System.out.println("Elements after poll, pollFirst and pollLast: " + d);

    d.pop();
    System.out.println("Elements after pop: " + d);
    
    d.retainAll(dq);
    System.out.println("Elements after retainAll: " + d);
    
    d.removeAll(dq);
    System.out.println("Elements after removeAll: " + d);
  }

}
Elements in the Deque: [30, 20, 10, 50, 40, 200, 300, 70, 60, 80, 90, 100]
Elements after remove: [20, 10, 40, 200, 300, 70, 60, 80, 90, 100]
Elements after removeFirst and removeLast: [10, 40, 200, 300, 70, 60, 80, 90]
Elements after poll, pollFirst and pollLast: [200, 300, 70, 60, 80]
Elements after pop: [300, 70, 60, 80]
Elements after retainAll: [70, 60, 80]
Elements after removeAll: []

Օրինակ. Deque- ից տարրեր վերցրեք

Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես ստուգել տարրը գոյություն ունի և Java- ում Deque- ի գլխի և պոչի տարրերը վերցնել: Արժեքի առկայությունը ստուգելու համար մենք կարող ենք օգտագործել պարունակում է () և պարունակում է բոլորը () մեթոդը: Մենք կարող ենք վերականգնել գլխի տարրը ՝ օգտագործելով տարր (), peek (), peekFirst () և getFirst () մեթոդները, մինչդեռ պոչի տարրը ստանալու համար կարող ենք օգտագործել getLast () և peekLast () մեթոդները:

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

public class RetrieveDequeElements {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    d.add(40);
    d.add(60);
    d.add(70);
    
    Deque<Integer> dq = new ArrayDeque<Integer>();
    dq.add(80);
    dq.add(90);
    
    d.addAll(dq);
    
    System.out.println(d);
    System.out.println(d.contains(10));
    System.out.println(d.contains(200));
    System.out.println(d.containsAll(dq));
    
    System.out.println("Output of element: " + d.element());
    System.out.println("Get first element using getFirst: " + d.getFirst());
    System.out.println("Get last element using getLast: " + d.getLast());
    System.out.println("Output of peek: " + d.peek());
    System.out.println("Get first element using peekFirst: " + d.peekFirst());
    System.out.println("Get last element using peekLast: " + d.peekLast());

  }

}
[30, 20, 10, 50, 40, 60, 70, 80, 90]
true
false
true
Output of element: 30
Get first element using getFirst: 30
Get last element using getLast: 90
Output of peek: 30
Get first element using peekFirst: 30
Get last element using peekLast: 90

Օրինակ ՝ Deնջել Deque- ն և ստուգել, ​​թե արդյոք դատարկ է

Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես մաքրել deque- ն `հեռացնելով բոլոր տարրերը` օգտագործելով հստակ () մեթոդը: Կարող ենք նաև ստուգել `արդյոք deque- ն դատարկ է` օգտագործելով isEmpty () մեթոդը:

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

public class ClearDeque {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    
    System.out.println("Is Empty: " + d.isEmpty());
    d.clear();
    System.out.println("Is Empty after clear: " + d.isEmpty());

  }

}
Is Empty: false
Is Empty after clear: true

Օրինակ. Կտորել տարրերը Deque- ում

Լռելյայն, մենք կարող ենք կրկնել deque- ի տարրերի միջոցով, օգտագործելով iterator () մեթոդը, որը վերադարձնում է տարրերը նույն հաջորդականությամբ: Արժեքները հետ բերելու նվազման կարգով, որի մեջ տեղադրված է, մենք կարող ենք օգտագործել նվազողIterator () մեթոդը:

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

public class IterateDeque {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    d.add(40);
    
    System.out.println("Iterate using iterator:");
    Iterator<Integer> i = d.iterator();
    while(i.hasNext())
      System.out.println(i.next());
    
    System.out.println("Iterate using descendingIterator:");
    Iterator<Integer> di = d.descendingIterator();
    while(di.hasNext())
      System.out.println(di.next());

  }

}
Iterate using iterator:
30
20
10
50
40
Iterate using descendingIterator:
40
50
10
20
30

Օրինակ. Deque- ը դարձնել զանգված

Ստորև բերված օրինակում մենք վերափոխում ենք deque- ը զանգվածի ներկայացման մեջ, օգտագործելով toArray () մեթոդը: Այսպիսով, մենք կարող ենք մուտք գործել զանգվածների ինդեքսի վրա հիմնված արժեքներ:

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

public class ConvertDequeToArray {

  public static void main(String[] args) {
    Deque<String> d = new ArrayDeque<String>();
    d.add("James");
    d.add("John");
    d.add("Xavior");
    d.add("Thomas");
    
    String[] arr = d.toArray(new String[d.size()]);
    System.out.println(Arrays.deepToString(arr));
    
    System.out.println("Value at index 2: "+ arr[2]);

  }

}
[James, John, Xavior, Thomas]
Value at index 2: Xavior

 

Մանրամասն