Java ArrayDeque (koos näidetega)

Selles õpetuses õpime näidete abil klassi ArrayDeque ja selle meetodeid. Samuti õpime virna rakendamiseks massiivdeksti kasutama.

Java-s saame ArrayDequeklassi kasutada massiivide abil järjekorra ja deque-struktuuride juurutamiseks.

ArrayDeque'i rakendatud liidesed

ArrayDequeKlassi rakendab need kaks liidesed:

  • Java järjekorra liides
  • Java deque liides

ArrayDeque'i loomine

Massiivdeksti loomiseks peame java.util.ArrayDequepaketi importima .

Siit saate teada, kuidas Java-massiivi luua:

 ArrayDeque animal = new ArrayDeque(); 

Siin näitab Type massiivi deque tüüpi. Näiteks,

 // Creating String type ArrayDeque ArrayDeque animals = new ArrayDeque(); // Creating Integer type ArrayDeque ArrayDeque age = new ArrayDeque(); 

ArrayDeque'i meetodid

ArrayDequeTasemega näeb implementation kõiki meetodeid esinevad Queueja Dequeliides.

Sisestage elemendid Deque'i

1. Lisage elemendid, kasutades add (), addFirst () ja addLast ()

  • add() - lisab määratud elemendi massiivi deque lõppu
  • addFirst() - lisab määratud elemendi massiivi deque algusesse
  • addLast()- lisab massiivi deque lõppu määratud (võrdne add())

Märkus: Kui massiiv deque on täis, kõik need meetodid add(), addFirst()ja addLast()viskab IllegalStateException.

Näiteks,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); // Using add() animals.add("Dog"); // Using addFirst() animals.addFirst("Cat"); // Using addLast() animals.addLast("Horse"); System.out.println("ArrayDeque: " + animals); ) ) 

Väljund

 ArrayDeque: (kass, koer, hobune) 

2. Sisestage elemendid pakkumise (), offerFirst () ja offerLast () abil

  • offer() - lisab määratud elemendi massiivi deque lõppu
  • offerFirst() - lisab määratud elemendi massiivi deque algusesse
  • offerLast() - lisab määratud elemendi massiivi deque lõppu

Märkus: offer() , offerFirst()ja offerLast()naaseb truekui element on edukalt sisestatud; kui massiivi deque on täis, naasevad need meetodid false.

Näiteks,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); // Using offer() animals.offer("Dog"); // Using offerFirst() animals.offerFirst("Cat"); // Using offerLast() animals.offerLast("Horse"); System.out.println("ArrayDeque: " + animals); ) ) 

Väljund

 ArrayDeque: (kass, koer, hobune) 

Märkus. Kui massiivi deque on täis

  • add()meetod viskavad erand
  • offer()meetod tagastabfalse

Juurdepääs ArrayDeque'i elementidele

1. Juurdepääs elementidele, kasutades getFirst () ja getLast ()

  • getFirst() - tagastab massiivi deque esimese elemendi
  • getLast() - tagastab massiivi deque'i viimase elemendi

Märkus. Kui massiivi deque on tühi getFirst()ja getLast()viskab NoSuchElementException.

Näiteks,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayDeque: " + animals); // Get the first element String firstElement = animals.getFirst(); System.out.println("First Element: " + firstElement); // Get the last element String lastElement = animals.getLast(); System.out.println("Last Element: " + lastElement); ) ) 

Väljund

 ArrayDeque: (koer, kass, hobune) esimene element: koer viimane element: hobune 

2. Juurdepääs elementidele, kasutades peek (), peekFirst () ja peekLast () meetodit

  • peek() - tagastab massiivi deque esimese elemendi
  • peekFirst()- tagastab massiivi deque esimese elemendi (ekvivalentne peek())
  • peekLast() - tagastab massiivi deque'i viimase elemendi

Näiteks,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayDeque: " + animals); // Using peek() String element = animals.peek(); System.out.println("Head Element: " + element); // Using peekFirst() String firstElement = animals.peekFirst(); System.out.println("First Element: " + firstElement); // Using peekLast String lastElement = animals.peekLast(); System.out.println("Last Element: " + lastElement); ) ) 

Väljund

 ArrayDeque: (koer, kass, hobune) peaelement: koera esimene element: koera viimane element: hobune 

Märkus. Kui massiivi deque on tühi, peek()ja peekFirst()ja getLast()viskab NoSuchElementException.

Eemaldage ArrayDeque'i elemendid

1. Eemaldage elemendid, kasutades meetodit Remove (), removeFirst (), removeLast ()

  • remove() - tagastab ja eemaldab massiivi deque esimesest elemendist elemendi
  • remove(element) - tagastab ja eemaldab määratud elemendi massiivi deque'i peast
  • removeFirst()- tagastab ja eemaldab massiividelt esimese elemendi (samaväärne remove())
  • removeLast() - tagastab ja eemaldab massiivi deque'st viimase elemendi

Märkus: Kui massiiv deque on tühi, remove(), removeFirst()ja removeLast()meetod viskab erand. Samuti remove(element)loob erandi, kui elementi ei leita.

Näiteks,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); animals.add("Dog"); animals.add("Cat"); animals.add("Cow"); animals.add("Horse"); System.out.println("ArrayDeque: " + animals); // Using remove() String element = animals.remove(); System.out.println("Removed Element: " + element); System.out.println("New ArrayDeque: " + animals); // Using removeFirst() String firstElement = animals.removeFirst(); System.out.println("Removed First Element: " + firstElement); // Using removeLast() String lastElement = animals.removeLast(); System.out.println("Removed Last Element: " + lastElement); ) ) 

Väljund

 ArrayDeque: (koer, kass, lehm, hobune) eemaldatud element: koer uus arrayDeque: (kass, lehm, hobune) eemaldatud esimene element: kass eemaldas viimase elemendi: hobune 

2. Eemaldage elemendid, kasutades meetodit poll (), pollFirst () ja pollLast ()

  • poll() - tagastab ja eemaldab massiivi esimese elemendi
  • pollFirst()- tagastab ja eemaldab massiivi deque esimese elemendi (samaväärne poll())
  • pollLast() - tagastab ja eemaldab massiivi deque'i viimase elemendi

Märkus. Kui massiivi deque on tühi poll(), pollFirst()ja pollLast()naaseb, nullkui elementi ei leitud.

Näiteks,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); animals.add("Dog"); animals.add("Cat"); animals.add("Cow"); animals.add("Horse"); System.out.println("ArrayDeque: " + animals); // Using poll() String element = animals.poll(); System.out.println("Removed Element: " + element); System.out.println("New ArrayDeque: " + animals); // Using pollFirst() String firstElement = animals.pollFirst(); System.out.println("Removed First Element: " + firstElement); // Using pollLast() String lastElement = animals.pollLast(); System.out.println("Removed Last Element: " + lastElement); ) ) 

Väljund

 ArrayDeque: (koer, kass, lehm, hobune) eemaldatud element: koer uus arrayDeque: (kass, lehm, hobune) eemaldatud esimene element: kass eemaldas viimase elemendi: hobune 

3. Eemaldage element: meetodi clear () abil

To remove all the elements from the array deque, we use the clear() method. For example,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayDeque: " + animals); // Using clear() animals.clear(); System.out.println("New ArrayDeque: " + animals); ) ) 

Output

 ArrayDeque: (Dog, Cat, Horse) New ArrayDeque: () 

Iterating the ArrayDeque

  • iterator() - returns an iterator that can be used to iterate over the array deque
  • descendingIterator() - returns an iterator that can be used to iterate over the array deque in reverse order

In order to use these methods, we must import the java.util.Iterator package. For example,

 import java.util.ArrayDeque; import java.util.Iterator; class Main ( public static void main(String() args) ( ArrayDeque animals= new ArrayDeque(); animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.print("ArrayDeque: "); // Using iterator() Iterator iterate = animals.iterator(); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) System.out.print("ArrayDeque in reverse order: "); // Using descendingIterator() Iterator desIterate = animals.descendingIterator(); while(desIterate.hasNext()) ( System.out.print(desIterate.next()); System.out.print(", "); ) ) ) 

Output

 ArrayDeque: (Dog, Cat, Horse) ArrayDeque in reverse order: (Horse, Cat, Dog) 

Other Methods

Methods Descriptions
element() Returns an element from the head of the array deque.
contains(element) Searches the array deque for the specified element.
If the element is found, it returns true, if not it returns false.
size() Returns the length of the array deque.
toArray() Converts array deque to array and returns it.
clone() Creates a copy of the array deque and returns it.

ArrayDeque as a Stack

To implement a LIFO (Last-In-First-Out) stacks in Java, it is recommended to use a deque over the Stack class. The ArrayDeque class is likely to be faster than the Stack class.

ArrayDeque provides the following methods that can be used for implementing a stack.

  • push() - adds an element to the top of the stack
  • peek() - returns an element from the top of the stack
  • pop() - returns and removes an element from the top of the stack

For example,

 import java.util.ArrayDeque; class Main ( public static void main(String() args) ( ArrayDeque stack = new ArrayDeque(); // Add elements to stack stack.push("Dog"); stack.push("Cat"); stack.push("Horse"); System.out.println("Stack: " + stack); // Access element from top of stack String element = stack.peek(); System.out.println("Accessed Element: " + element); // Remove elements from top of stack String remElement = stack.pop(); System.out.println("Removed element: " + remElement); ) ) 

Output

 Stack: (Horse, Cat, Dog) Accessed Element: Horse Removed Element: Horse 

ArrayDeque Vs. LinkedList Class

Both ArrayDeque and Java LinkedList implements the Deque interface. However, there exist some differences between them.

  • LinkedList supports null elements, whereas ArrayDeque doesn't.
  • Iga lingitud loendi sõlm sisaldab linke teistele sõlmedele. Sellepärast on LinkedListvaja rohkem salvestusruumi kui ArrayDeque.
  • Kui rakendate järjekorda või deque-andmestruktuuri, ArrayDequeon tõenäoliselt kiirem kui a LinkedList.

Huvitavad Artiklid...