Java Deque

Java Deque
Une file d'attente dans l'informatique est une structure de données de liste de premier in_First-out-out (FIFO). Cela signifie ajouter un nouvel élément, l'élément est en cours à l'arrière de la liste; Et pour supprimer un élément, l'élément est déséqué de l'avant de la liste. L'élément avant peut également être jeté, ce qui signifie le lire mais ne pas le retirer.

Une pile dans l'informatique est une structure de données de liste du dernier in_first-out-out (LIFO). Cela signifie ajouter un nouvel élément, l'élément est poussé à l'avant de la liste; Et pour supprimer un élément, l'élément sort de l'avant de la liste. L'élément avant peut également être jeté, ce qui signifie le lire mais ne pas le retirer.

Le nom «Deque» est la forme courte de la «file d'attente à double extrémité», prononcée «deck» prononcée. Le Deque est un FIFO et une structure de données LIFO List en Java. Eh bien, également à Java, le deque est une interface à partir de laquelle les classes peuvent être implémentées. Java a déjà les classes suivantes implémentées: ArrayDeque, ConcurrentLinkEdDeque, LinkedBlockingDeque, LinkedList. La classe Arraydeque a été choisie pour être étudiée dans cet article.

Voici les méthodes correspondantes Java ArrayDeque pour la file d'attente:

File d'attente Arrayeque
enquérir ajouter
déshabiller retirer
jeter un coup d'œil jeter un coup d'œil

Voici les méthodes correspondantes Java ArrayDeque pour la pile:

Empiler Arrayeque
pousser pousser
populaire populaire
jeter un coup d'œil jeter un coup d'œil

Remarque: la méthode peek () est la même pour les deux comportements. De plus, retirer () et pop () sont très similaires; Ils sont expliqués ci-dessous.

Construire une arrayeque

La classe Arraydeque est dans le java.user.* package, qui doit être importé. Il compte trois constructeurs, dont deux sont expliqués ici.

Public ArrayDeque ()
Cela crée un désactive vide, comme le montre le segment de code suivant:

Arrayeque dq = nouveau Arraydeque();
dq.ajouter ('f'); dq.ajouter ('g'); dq.ajouter ('h'); dq.ajouter ('i'); dq.ajouter ('j');

Cinq éléments ont été ajoutés. Le nom du deque ici est, dq.

Arraydeque public (Collection C)
Ce constructeur surchargé, crée un déso. Le segment de code suivant l'illustre:

Arrayeque dq = nouveau Arraydeque();
dq.ajouter ('f'); dq.ajouter ('g'); dq.ajouter ('h'); dq.ajouter ('i'); dq.ajouter ('j');
Arrayeque DQ1 = Nouveau arraydeque(dq);

DQ1 a été créé à partir de DQ.

Méthodes de la classe Arraydeque

Public Boolean Add (E E)
Ceci est l'équivalent de la mise. Il ajoute un élément à la fin du deque. Le programme suivant illustre ceci:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.ajouter ('f'); dq.ajouter ('g'); dq.ajouter ('h'); dq.ajouter ('i'); dq.ajouter ('j');

public int size ()
Cela renvoie la taille (longueur) du deque. Le programme suivant illustre ceci:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.ajouter ('f'); dq.ajouter ('g'); dq.ajouter ('h'); dq.ajouter ('i'); dq.ajouter ('j');
int sz = dq.taille();
Système.dehors.println (sz);

La sortie est 5.

public e supaire ()
Ceci est l'équivalent de la déshabitation. Il supprime un élément de l'avant de la liste. Le programme suivant illustre ceci:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.ajouter ('f'); dq.ajouter ('g'); dq.ajouter ('h'); dq.ajouter ('i'); dq.ajouter ('j');
char ch1 = dq.retirer(); char ch2 = dq.retirer(); char ch3 = dq.retirer();
char ch4 = dq.retirer(); char ch5 = dq.retirer();
Système.dehors.Imprimer (CH1); Système.dehors.imprimer ("); système.dehors.imprimer (CH2); Système.dehors.imprimer(");
Système.dehors.imprimer (CH3); Système.dehors.imprimer ("); système.dehors.Imprimer (CH4); Système.dehors.imprimer(");
Système.dehors.imprimer (CH5); Système.dehors.imprimer(");
Système.dehors.println ();

La sortie est:

F g h i j

montrant un comportement FIFO.

public e peek ()
Cela lit l'élément à l'avant du deque sans le retirer. Le programme suivant illustre ceci:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.ajouter ('f'); dq.ajouter ('g'); dq.ajouter ('h'); dq.ajouter ('i'); dq.ajouter ('j');
char ch1 = dq.peek (); char ch2 = dq.peek (); char ch3 = dq.peek ();
char ch4 = dq.peek (); char ch5 = dq.peek ();
Système.dehors.Imprimer (CH1); Système.dehors.imprimer ("); système.dehors.imprimer (CH2); Système.dehors.imprimer(");
Système.dehors.imprimer (CH3); Système.dehors.imprimer ("); système.dehors.Imprimer (CH4); Système.dehors.imprimer(");
Système.dehors.imprimer (CH5); Système.dehors.imprimer(");
Système.dehors.println ();

La sortie est:

F f f f f

indiquant que rien n'a été supprimé, et le premier élément vient d'être lu cinq fois.

Poussière de vide public (e e)
Cela ajoute un élément à l'avant du deque. Le programme suivant illustre ceci:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
char ch1 = dq.retirer(); char ch2 = dq.retirer(); char ch3 = dq.retirer();
char ch4 = dq.retirer(); char ch5 = dq.retirer();
Système.dehors.Imprimer (CH1); Système.dehors.imprimer ("); système.dehors.imprimer (CH2); Système.dehors.imprimer(");
Système.dehors.imprimer (CH3); Système.dehors.imprimer ("); système.dehors.Imprimer (CH4); Système.dehors.imprimer(");
Système.dehors.imprimer (CH5); Système.dehors.imprimer(");
Système.dehors.println ();

La sortie est:

J I H G F

montrant un comportement LIFO.

public e pop ()
Cela supprime et renvoie le premier élément du Deque. Le programme suivant illustre ceci:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
char ch1 = dq.populaire(); char ch2 = dq.populaire(); char ch3 = dq.populaire();
char ch4 = dq.populaire(); char ch5 = dq.populaire();
Système.dehors.Imprimer (CH1); Système.dehors.imprimer ("); système.dehors.imprimer (CH2); Système.dehors.imprimer(");
Système.dehors.imprimer (CH3); Système.dehors.imprimer ("); système.dehors.Imprimer (CH4); Système.dehors.imprimer(");
Système.dehors.imprimer (CH5); Système.dehors.imprimer(");
Système.dehors.println ();

La sortie est:

J I H G F

montrant un comportement LIFO.

Public Void Forach (Action des consommateurs)
Cette méthode foreach peut être utilisée pour accéder à chaque élément du deque. Le programme suivant l'utilise pour imprimer tous les éléments du deque:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
dq.foreach ((article) -> système.dehors.print (item + ""));
Système.dehors.println ();

La sortie est:

J I H G F

L'article est une variable fictive qui représente chaque élément du deque. Notez la façon dont il a été utilisé. Remarque l'utilisation de l'opérateur de flèche, -> . L'itération a été effectuée dans l'ordre inverse.

Iterator iterator ()
Cela renvoie un itérateur qui peut être utilisé pour éliminer un élément dans le deque. Cependant, cette action prend plus de temps que le retrait d'un élément à l'avant ou à l'arrière du deque. L'énoncé suivant retournerait l'itérateur pour les caractères d'un deque.

Itérateur iter = dq.iterator ();

où iter est l'objet itérateur, et dq est l'objet deque.

L'itérateur a les méthodes suivantes:

booléen hasnext (): revient vrai si l'itération a plus d'éléments.

E next (): renvoie l'élément suivant de l'itération.

Par défaut void retirait (): supprime de la liste, le dernier élément renvoyé par cet itérateur (suivant).

Notez qu'il n'a pas de méthode pour insérer un élément dans le deque.

Supprimer un élément dans Deque

Le programme suivant supprime «H» au milieu de la liste de deque: F, G, H, I, J:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Arrayeque dq = nouveau Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
Itérateur iter = dq.iterator ();
iter.suivant(); iter.suivant(); iter.suivant();
iter.retirer();
dq.foreach ((article) -> système.dehors.print (item + ""));
Système.dehors.println ();

La sortie est:

J i g f

Notez que Next () devait être appelé trois fois.

Conclusion

À Java, le Deque est à la fois une collection FIFO et LIFO. Deque in Java est en fait une interface à partir de laquelle une classe doit être implémentée avant que le deque puisse être utilisé. Heureusement, Java a déjà les classes implémentées de Deque suivantes: ArrayDeque, ConcurrentLinkEdDeque, LinkedBlockingDeque, Linkedlist. L'opération pour Arraydeque a été expliquée ci-dessus.