በጃቫ ውስጥ ዲክ  



ዲክ ጃቫ

በዲዛይን በይነገጽ ጃቫ ውስጥ  

ዲክ በጃቫ ውስጥ የሚዘልቅ በይነገጽ ነው ተራ በይነገጽ. እሱ ባለ ሁለት ጫፍ ወረፋ ማለት ነው ይህም ማለት ከሁለቱም ወገኖች አባሎችን ማስገባት እና መሰረዝ እንችላለን ማለት ነው። የመጀመሪያ-የመጀመሪያ-መውጫ (FIFO) እና የመጨረሻ-የመጀመሪያ-መውጫ (LIFO) የሆነውን ሁለቱን የወረፋ ትግበራ ይደግፋል ፡፡ ዲክ በይነገጽ የ java.util አካል ነው እሽግ እና የ ስብስብ ማዕቀፍ.

ዲክ ተዋረድ  

በጃቫ ውስጥ ዲክጭንቅላታም መያያዣ መርፌ

በጃቫ ውስጥ የዲኪ ባህሪዎች  

  • ዲክ በጃቫ ውስጥ ሁለቱንም FIFO እና LIFO ይተገበራል
  • ተለዋዋጭ ሊለዋወጥ የሚችል ድርድር ነው
  • ኑኪ እሴቶችን በዲክ ውስጥ ማከማቸት አንችልም
  • በነባሪነት ክር-ደህና አይደለም።

በጃቫ ውስጥ ዲክ

የዲዛይን በይነገጽን በጃቫ ውስጥ የሚተገብሩ ክፍሎች  

የዲክ በይነገጽን የሚተገብሩ ክፍሎች ከዚህ በታች ናቸው-

  • የተገናኘ ዝርዝር:
    Deque<Type> d = new LinkedList<Type>();
  • ድርድር:
    Deque<Type> d = new ArrayDeque<Type>();
    

     

የዲዛይን ዘዴዎች በጃቫ ውስጥ  

መንገድመግለጫየልኬት
ቡሊያን አክል (Element e)የተገለጸውን አካል በዲቁ መጨረሻ ላይ ያክላል። ሠ - የሚጨመረው ንጥረ ነገር።
የመመለስ እሴት - እውነት ነው
ቡሊያን አክል ሁሉም (ስብስብ ሐ)የተገለጹ አባላትን ስብስብ ለዲቁ ያክላል ፡፡ሐ - የሚጨመሩ ንጥረ ነገሮች ስብስብ
የመመለስ እሴት - እውነት ነው
ባዶነት addFirst (Element e)በዲቁ መጀመሪያ ላይ አንድ አባል ያስገባልሠ - የሚገባው ንጥረ ነገር
ባዶነት የመጨረሻ (Element e)በዲቁ መጨረሻ ላይ አንድ አባል ያስገባልሠ - የሚገባው ንጥረ ነገር
ባዶ ()በዲቁ ውስጥ ያሉትን ሁሉንም ንጥረ ነገሮች ያጸዳል።
ቡሊያን ይ containsል (Object o)ዲቁ የተገለጸውን ንጥረ ነገር ከያዘ ይፈትሻልየመመለሻ እሴት - ዲቁ ንጥረ ነገሩን ከያዘ እውነት ነው
ቡሊያን ሁሉንም ይ containsል (ስብስብ ሐ)ዲቁ በስብስቡ ውስጥ ያሉትን ሁሉንም ንጥረ ነገሮች ከያዘ ይፈትሻልየመመለሻ እሴት - ዲቁ ሁሉንም ንጥረ ነገሮች ከያዘ እውነት ነው
ኢተራክተር እየወረደ ኢቴክተር ()በተቃራኒው ቅደም ተከተል በዲቁ ውስጥ ባሉ ንጥረ ነገሮች ላይ አንድ ተደጋጋሚ መልስ ይሰጣል
የነገር ንጥረ ነገር ()በዲቁ ውስጥ የመጀመሪያውን ንጥረ ነገር (ራስ) ይመልሳል
የቦሊያን እኩል (Object o)ዲቁ በትክክለኛው ቅደም ተከተል ሁሉንም የተጠቀሱትን አካላት ከያዘ ያነፃፅራልየመመለሻ እሴት - የነገሮች አካላት ከዲቁ ጋር የሚዛመዱ ከሆነ እውነት ነው
ነገር getFirst ()በዲቁ ውስጥ የመጀመሪያውን ንጥረ ነገር (ራስ) ይመልሳል
የመጨረሻ ነገር ()በዲቁ ውስጥ የመጨረሻውን ንጥረ ነገር (ጅራት) ይመልሳል
ቡሊያን ባዶ ነው ()ዲቁ ባዶ ከሆነ ወይም እንዳልሆነ ይፈትሻልየመመለሻ እሴት - ዲክ ምንም እሴቶች ከሌለው እውነት ነው
የተስተካከለ ተደጋጋሚ ()በቅደም ተከተል የቅዱሳን ተሟጋች ሰርስሮ ያገኛልየመመለስ እሴት - ኢተራክተር
የቦሊያን ቅናሽ (ነገር ሠ)ንጥረ ነገሩን እንደ ጅራት ያስገባልሠ - የሚታከል አካል
የቦሊያን ቅናሽ መጀመሪያ (Object e)በዲቁ ፊት ለፊት ያለውን ንጥረ ነገር ያስገባልሠ - የሚታከል አካል
የቦሊያን አቅርቦት የመጨረሻ (ነገር ሠ)በዲቁ መጨረሻ ላይ ያለውን ንጥረ ነገር ያስገባልሠ - የሚታከል አካል
የነገር እይታ ()የዲያቆን የመጀመሪያውን ክፍል (ራስ) ሰርስሮ ይወስዳልዲቁ ባዶ ከሆነ ባዶ ይመለሳል
የነገር እይታ መጀመሪያ ()የዲያቆን የመጀመሪያውን ክፍል (ራስ) ሰርስሮ ይወስዳልዲቁ ባዶ ከሆነ ባዶ ይመለሳል
የመጨረሻ እይታ ()የዲክ (ጅራት) የመጨረሻውን ንጥረ ነገር ሰርስሮ ይወስዳልዲቁ ባዶ ከሆነ ባዶ ይመለሳል
የነገር ምርጫ ()የዲቁ (ራስ) የመጀመሪያውን ንጥረ ነገር ሰርስሮ ያስወግዳልዲቁ ባዶ ከሆነ ባዶ ይመለሳል
የነገር ምርጫ መጀመሪያ ()የዲቁ (ራስ) የመጀመሪያውን ንጥረ ነገር ሰርስሮ ያስወግዳልዲቁ ባዶ ከሆነ ባዶ ይመለሳል
የነገር ምርጫ የመጨረሻ ()የዲክ (ጅራት) የመጨረሻውን ንጥረ ነገር ሰርስሮ ያስወግዳልዲቁ ባዶ ከሆነ ባዶ ይመለሳል
የነገር ፖፕ ()የመጀመሪያውን ክፍል ከዲቁ ቁልል ሰርስሮ ያወጣል ወይም ያስወግዳል
ባዶ መግፋት (ነገር ሠ)አባሉን ከዲቁ ፊት ለፊት ያስገባልሠ - የሚጨመረው ንጥረ ነገር
ነገር አስወግድ ()የመጀመሪያውን ንጥረ ነገር ከዲቁ ውስጥ ያስወግዳል
የቦሊያን ማስወገጃ (Object o)የተገለጸውን ነገር የመጀመሪያውን ክስተት ከተገኘ ከዲቁ ውስጥ ያስወግዳልo - መወገድ ያለበት አካል
የመመለሻ እሴት - ዲክ ንጥረ ነገሩን ከያዘ እውነት ነው
ቡሊያን አስወግድ ሁሉም (ስብስብ ሐ)በስብስቡ ውስጥ ያሉት የሁሉም ንጥረ ነገሮች የመጀመሪያ ክስተት ካለ ከዲቁ ውስጥ ያስወግዳልሐ - የንጥረ ነገሮች ስብስብ
የመመለሻ እሴት - ዲቁ ስብስቡን ከያዘ እውነት ነው
ነገር አስወግድ መጀመሪያ ()የሃይማኖቱን የመጀመሪያ ክፍል ያስወግዳል
ቡሊያን አስወግድ የመጀመሪያ ነገር (Object e)በዲቁ ውስጥ የተገለጸውን ንጥረ ነገር የመጀመሪያውን ክስተት ያስወግዳልሠ - የሚወጣው ንጥረ ነገር
ነገር አስወግድ ()የመጨረሻውን ንጥረ ነገር ከዲቁ ውስጥ ያስወግዳል
ቦሊያን አስወግድ የመጨረሻ ኦክቸረንስ (Object e)የተገለጸውን ንጥረ ነገር የመጨረሻ ክስተት ከዲቁ ውስጥ ያስወግዳልሠ - የሚወጣው ንጥረ ነገር
የቦሊያን ማቆያ ሁሉም (ስብስብ ሐ)በስብስብ ውስጥ የተጠቀሱትን ሁሉንም ንጥረ ነገሮች በቅርስ ውስጥ ይጠብቃል ፡፡ ሌሎች አካላት ይወገዳሉሐ - መቆየት ያለበት ንጥረ ነገሮች ስብስብ
የመመለሻ ዋጋ - በተጠራው ዘዴ ምክንያት ዲቁ ከተቀየረ እውነት ነው
int መጠን ()የዲቁቱን መጠን ያወጣልየመመለሻ እሴት - የዲቁ መጠን
ነገር [] toArray ()በተከታታይ ቅደም ተከተል የበርካታ ንጥሎችን ይመልሳልየመመለሻ እሴት - በትክክለኛው ቅደም ተከተል በዲክ ውስጥ የሁሉም አካላት ድርድር
ሕብረቁምፊ ወደ ወደ ውጭ ()የንጥሎች ስብስብ የክርክር ውክልና ይመልሳልየመመለሻ እሴት - በነጠላ ሰረዝ እና በጠፈር ተለያይተው በ ውስጥ የተዘጉ የድርድር አባሎች ክር

ምሳሌ: አባሎችን በዲክ ውስጥ ያስገቡ  

በጃቫ ውስጥ አባሎችን በዲክ ውስጥ ለማስገባት ብዙ ዘዴዎች አሉ ፡፡ ከዚህ በታች ያለው ምሳሌ ሁሉንም ዘዴዎች በመጠቀም አባላትን እንዴት ማስገባት እንደሚቻል ያሳያል። የመደመር () እና የቅናሽ () ዘዴዎች ንጥረ ነገሮችን በመደበኛ ቅደም ተከተል ያስገባሉ። AddFirst () ፣ offerFirst () እና የግፋ () ዘዴዎች ፣ ለአራጁ የመጀመሪያ እሴት ያስገባል ፡፡ የ addLast () እና offerLast () ዘዴዎችን በመጠቀም አባሎችን እስከ ዲቁ መጨረሻ ድረስ ማስገባት እንችላለን ፡፡ የንጥሎች ስብስብን ለመጨመር የ 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);

  }

}

ምሳሌ: አባሎችን ከዲኪ ሰርዝ  

ከተለያዩ የማከል ክዋኔዎች ጋር ተመሳሳይነት ያለው ፣ በጃቫ ውስጥ ዲክቲክ በርካታ የስረዛ ክዋኔዎችን ይደግፋል እንዲሁም ከዚህ በታች ባለው ምሳሌ ውስጥ በዝርዝር ተገልጻል ፡፡ የማስወገጃው () እና የምርጫ () ዘዴዎች ንጥረ ነገሩን ከዲቁ መጀመሪያ ጀምሮ ይሰርዙታል ፡፡ የ ‹PreFirst ›() ፣ pollFirst () እና ፖፕ () ዘዴዎች የመጀመሪያውን ንጥረ ነገር ያስወግዳል ፡፡ የመጨረሻውን ንጥረ ነገር ለማስወገድ የ ‹Last› ን (እና) እና የመጨረሻውን () ዘዴዎችን መጠቀም እንችላለን ፡፡ እንዲሁም የማስወገጃውን () ዘዴ በመጠቀም የንጥሎች ስብስብ ማስወገድ እንችላለን። ሁሉም () ዘዴው የሚጠብቀው የንጥረ ነገሮችን ስብስብ ብቻ ሲሆን ሌሎቹን ከዲቁ ይሰርዛል ፡፡

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: []

ምሳሌ አባሎችን ከዲኪ ሰርስሮ ያውጡ  

ከዚህ በታች ያለው ምሳሌ ኤለመንት ካለ ለመፈተሽ እና በጃቫ ውስጥ የዲኪን ጭንቅላት እና ጅራት አባሎችን እንዴት እንደሚያገኙ ያሳያል። የእሴት መኖርን ለመፈተሽ ፣ በውስጡ የያዘውን () እና የያዘውን ሁሉንም () ዘዴ መጠቀም እንችላለን ፡፡ የጅራቱን ንጥረ ነገር ለማግኘት የ ‹Le› ፣ የ 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

ምሳሌ: - ዲክን ያጽዱ እና ባዶ ከሆነ ያረጋግጡ  

ከዚህ በታች ያለው ምሳሌ ግልፅ () ዘዴን በመጠቀም ሁሉንም ንጥረ ነገሮች በማስወገድ ዲኑን እንዴት እንደሚያፀዳ ያሳያል ፡፡ እኛ ደግሞ “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

ምሳሌ-ኢታሬት ንጥረ ነገሮችን በዲክ ውስጥ  

በነባሪ ፣ በተመሳሳይ ቅደም ተከተል ንጥረ ነገሮቹን የሚመልሰውን ተደጋጋሚ () ዘዴ በመጠቀም በዲቁ ውስጥ ያሉትን ንጥረ ነገሮች መዞር እንችላለን ፡፡ እሴቶቹን በተገባበት ቁልቁል ቅደም ተከተል ለማግኘት ፣ የወረደውን አስተላላፊ () ዘዴን መጠቀም እንችላለን ፡፡

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

ምሳሌ: ዲካን ወደ ድርድር ቀይር  

ከዚህ በታች ባለው ምሳሌ ውስጥ የቶራክ () ዘዴን በመጠቀም ዲኑን ወደ ድርድር ውክልና እንለውጣለን ፡፡ በዚህ መንገድ በድርድር ኢንዴክስ ላይ በመመርኮዝ እሴቶቹን መድረስ እንችላለን ፡፡

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

 

ማጣቀሻ

ተመልከት
በጃቫ ውስጥ FileInputStream