Σε αυτό το σεμινάριο, θα μάθουμε για τη διασύνδεση Deque, τον τρόπο χρήσης και τις μεθόδους της.
Η Deque
διεπαφή του πλαισίου συλλογών Java παρέχει τη λειτουργικότητα μιας ουράς διπλού άκρου. Επεκτείνει τη Queue
διεπαφή.
Εργασία του Ντεκ
Σε μια κανονική ουρά, τα στοιχεία προστίθενται από πίσω και αφαιρούνται από μπροστά. Ωστόσο, σε ένα deque, μπορούμε να εισάγουμε και να αφαιρέσουμε στοιχεία από το μπροστινό και το πίσω μέρος .
Μαθήματα που εφαρμόζουν το Deque
Για να χρησιμοποιήσουμε τις λειτουργίες της Deque
διεπαφής, πρέπει να χρησιμοποιήσουμε κλάσεις που την εφαρμόζουν:
- ArrayDeque
- Συνδεδεμένη λίστα
Πώς να χρησιμοποιήσετε το Deque;
Στην Java, πρέπει να εισαγάγουμε το java.util.Deque
πακέτο για χρήση Deque
.
// Array implementation of Deque Deque animal1 = new ArrayDeque(); // LinkedList implementation of Deque Deque animal2 = new LinkedList();
Εδώ, δημιουργήσαμε αντικείμενα animal1 και animal2 των τάξεων ArrayDeque και LinkedList, αντίστοιχα. Αυτά τα αντικείμενα μπορούν να χρησιμοποιήσουν τις λειτουργίες της Deque
διεπαφής.
Μέθοδοι Deque
Δεδομένου ότι Deque
επεκτείνει τη Queue
διεπαφή, κληρονομεί όλες τις μεθόδους της διεπαφής ουράς.
Εκτός από τις διαθέσιμες μεθόδους στη Queue
διεπαφή, η Deque
διεπαφή περιλαμβάνει επίσης τις ακόλουθες μεθόδους:
- addFirst () - Προσθέτει το καθορισμένο στοιχείο στην αρχή του deque. Ρίχνει μια εξαίρεση εάν το deque είναι γεμάτο.
- addLast () - Προσθέτει το καθορισμένο στοιχείο στο τέλος του deque. Ρίχνει μια εξαίρεση εάν το deque είναι γεμάτο.
- offerFirst () - Προσθέτει το καθορισμένο στοιχείο στην αρχή του deque. Επιστρέφει
false
εάν το deque είναι γεμάτο. - offerLast () - Προσθέτει το καθορισμένο στοιχείο στο τέλος του deque. Επιστρέφει
false
εάν το deque είναι γεμάτο. - getFirst () - Επιστρέφει το πρώτο στοιχείο της deque. Ρίχνει μια εξαίρεση εάν το deque είναι κενό.
- getLast () - Επιστρέφει το τελευταίο στοιχείο του deque. Ρίχνει μια εξαίρεση εάν το deque είναι κενό.
- peekFirst () - Επιστρέφει το πρώτο στοιχείο του deque. Επιστρέφει
null
εάν το deque είναι κενό. - peekLast () - Επιστρέφει το τελευταίο στοιχείο του deque. Επιστρέφει
null
εάν το deque είναι κενό. - removeFirst () - Επιστρέφει και αφαιρεί το πρώτο στοιχείο του deque. Ρίχνει μια εξαίρεση εάν το deque είναι κενό.
- removeLast () - Επιστρέφει και αφαιρεί το τελευταίο στοιχείο του deque. Ρίχνει μια εξαίρεση εάν το deque είναι κενό.
- pollFirst () - Επιστρέφει και αφαιρεί το πρώτο στοιχείο του deque. Επιστρέφει
null
εάν το deque είναι κενό. - pollLast () - Επιστρέφει και αφαιρεί το τελευταίο στοιχείο του deque. Επιστρέφει
null
εάν το deque είναι κενό.
Deque ως Stack Data Structure
Η Stack
κλάση του Collections
πλαισίου Java παρέχει την υλοποίηση της στοίβας.
Ωστόσο, συνιστάται η χρήση Deque
ως στοίβα αντί για την κατηγορία Stack. Είναι επειδή οι μέθοδοι Stack
είναι συγχρονισμένες.
Ακολουθούν οι μέθοδοι Deque
που παρέχει η διεπαφή για την εφαρμογή στοίβας:
push()
- προσθέτει ένα στοιχείο στην αρχή του dequepop()
- αφαιρεί ένα στοιχείο από την αρχή του dequepeek()
- επιστρέφει ένα στοιχείο από την αρχή του deque
Υλοποίηση του Deque στην κατηγορία ArrayDeque
import java.util.Deque; import java.util.ArrayDeque; class Main ( public static void main(String() args) ( // Creating Deque using the ArrayDeque class Deque numbers = new ArrayDeque(); // add elements to the Deque numbers.offer(1); numbers.offerLast(2); numbers.offerFirst(3); System.out.println("Deque: " + numbers); // Access elements of the Deque int firstElement = numbers.peekFirst(); System.out.println("First Element: " + firstElement); int lastElement = numbers.peekLast(); System.out.println("Last Element: " + lastElement); // Remove elements from the Deque int removedNumber1 = numbers.pollFirst(); System.out.println("Removed First Element: " + removedNumber1); int removedNumber2 = numbers.pollLast(); System.out.println("Removed Last Element: " + removedNumber2); System.out.println("Updated Deque: " + numbers); ) )
Παραγωγή
Deque: (3, 1, 2) Πρώτο στοιχείο: 3 Τελευταίο στοιχείο: 2 Καταργήθηκε το πρώτο στοιχείο: 3 Καταργήθηκε το τελευταίο στοιχείο: 2 Ενημερώθηκε Deque: (1)
Για να μάθετε περισσότερα, επισκεφθείτε το Java ArrayDeque.