Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Structure de Données Deque en Java | Structures de Données Avancées en Java
Structures de Données Java

bookStructure de Données Deque en Java

File d’attente à double extrémité

Deque, ou file d’attente à double extrémité, permet de manipuler les files d’attente à la fois par l’avant et par l’arrière.

L’interface Deque étend l’interface Queue, ainsi une classe comme LinkedList implémente également cette interface.

Par conséquent, vous utiliserez à nouveau LinkedList, mais cette fois-ci avec une nouvelle interface.

Déclarer un objet de type Deque ne diffère pas de Queue :

Main.java

Main.java

copy
1
Deque<T> deque = new LinkedList<>();

La principale différence apparaît lorsque l’on examine les méthodes de cette interface.

Puisqu’un Deque est une file à double extrémité, ce qui signifie que l’on peut manipuler les éléments à la fois au début et à la fin de la file, ses méthodes sont adaptées à cette caractéristique.

Méthodes

Quelques méthodes clés de l’interface Deque sont :

  • addFirst(element) : ajoute un élément au début du deque ;
  • addLast(element) : ajoute un élément à la fin du deque.

Il est évident que, dans un deque, il existe des méthodes pour ajouter au début et à la fin. Les noms de ces méthodes sont explicites. Examinons ces méthodes dans le code :

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addFirst("One"); deque.addLast("Two"); System.out.println("Deque: " + deque); deque.addFirst("Zero"); System.out.println("Deque after the `addFirst()` method: " + deque); } }

Comme vous pouvez le constater, après avoir utilisé la méthode addFirst(), l’élément a été ajouté au début de la deque. Cela la distingue de la méthode addLast().

Deque possède également une méthode add() classique, qui fonctionne de la même manière que la méthode addLast(). Le choix de la méthode à utiliser vous appartient donc entièrement.

Méthodes de suppression

S’il existe des méthodes pour ajouter des éléments au début et à la fin, il doit également y avoir des méthodes pour supprimer du début et de la fin de la deque.

  • removeFirst() : supprime et retourne l’élément du début de la deque ;
  • removeLast() : supprime et retourne l’élément de la fin de la deque.

Les méthodes addFirst() et addLast() effectuent la suppression des éléments du début et de la fin de la deque.

Examinons un exemple d’utilisation dans le code :

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); deque.removeFirst(); deque.removeLast(); System.out.println("Deque after the removal methods method: " + deque); } }

Comme vous pouvez le voir, nous avons supprimé le premier et le dernier élément de la deque, ne laissant que le deuxième élément.

C'est simple et pratique, et les noms des méthodes sont explicites.

Méthodes d'accès

Passons maintenant aux méthodes permettant d'accéder aux éléments d'une deque.

  • getFirst() : récupère, sans supprimer, l'élément situé en tête de la deque ;
  • getLast() : récupère, sans supprimer, l'élément situé en fin de deque.

Cela permet d'accéder aux premier et dernier éléments d'une file doublement terminée.

Voyons maintenant un exemple en code :

Main.java

Main.java

copy
123456789101112131415161718
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); String first = deque.getFirst(); String last = deque.getLast(); System.out.println("The first element in the deque: " + first); System.out.println("The last element in the deque: " + last); } }

En utilisant les méthodes getFirst() et getLast(), nous avons récupéré les premiers et derniers éléments de la deque et attribué ces valeurs à de nouvelles variables créées.

Dans l’interface Deque, il existe également les méthodes peekFirst() et peekLast(), qui résolvent le problème de la levée d’une exception. Au lieu de lancer une exception et d’arrêter le programme, elles renvoient null si la file est vide.

Examinons un exemple :

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); System.out.println("Deque: " + deque); String first = deque.peekFirst(); System.out.println("The first element in the deque: " + first); String last = deque.getLast(); System.out.println("The last element in the deque: " + last); } }

À partir de cet exemple, il est devenu évident qu’il est bien préférable d’utiliser les méthodes peekFirst() et peekLast() au lieu de getFirst() et getLast(), car elles n’interrompent pas le programme en cas d’erreur.

Cependant, il ne faut pas oublier l’exception NullPointerException ! Cette exception peut causer de nombreux problèmes dans votre programme.

Il existe également des méthodes alternatives équivalentes pour les méthodes addFirst(), addLast(), removeFirst() et removeLast(). Nous n’allons pas nous attarder dessus, car vous comprenez déjà le fonctionnement de ces méthodes, mais voici la liste :

Méthodes alternatives

Méthodes pour ajouter un élément à la deque :

  • offerFirst(E e) : ajoute un élément au début de la deque, si possible, et retourne true. Retourne false si l’ajout n’est pas possible ;
  • offerLast(E e) : ajoute un élément à la fin de la deque, si possible, et retourne true. Retourne false si l’ajout n’est pas possible ;
  • push(E e) : ajoute un élément au début de la deque, similaire à addFirst(). À noter que push() est également une méthode de pile dans la classe Deque.

Méthodes pour supprimer un élément de la deque :

  • pollFirst() : supprime et retourne le premier élément de la deque. Retourne null si la deque est vide ;
  • pollLast() : supprime et retourne le dernier élément de la deque. Retourne null si la deque est vide ;
  • pop() : supprime et retourne le premier élément de la deque, similaire à removeFirst().

Le choix dépend des exigences du programme. Il est toujours possible de tout résoudre avec un tableau classique, mais cela serait assez complexe et non optimisé. C’est pourquoi il existe autant de structures de données différentes — pour rendre l’écriture de divers programmes plus pratique.

1. Que signifie « Deque » ?

2. Quelle interface en Java représente une Deque ?

3. Quel est le but de la méthode addFirst() dans une Deque ?

4. Quelle méthode est utilisée pour récupérer, sans supprimer, le dernier élément d'une Deque ?

question mark

Que signifie « Deque » ?

Select the correct answer

question mark

Quelle interface en Java représente une Deque ?

Select the correct answer

question mark

Quel est le but de la méthode addFirst() dans une Deque ?

Select the correct answer

question mark

Quelle méthode est utilisée pour récupérer, sans supprimer, le dernier élément d'une Deque ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

What are some real-world use cases for a Deque?

Can you explain the difference between a Deque and a regular Queue?

How do I choose between using addFirst/addLast and offerFirst/offerLast?

bookStructure de Données Deque en Java

Glissez pour afficher le menu

File d’attente à double extrémité

Deque, ou file d’attente à double extrémité, permet de manipuler les files d’attente à la fois par l’avant et par l’arrière.

L’interface Deque étend l’interface Queue, ainsi une classe comme LinkedList implémente également cette interface.

Par conséquent, vous utiliserez à nouveau LinkedList, mais cette fois-ci avec une nouvelle interface.

Déclarer un objet de type Deque ne diffère pas de Queue :

Main.java

Main.java

copy
1
Deque<T> deque = new LinkedList<>();

La principale différence apparaît lorsque l’on examine les méthodes de cette interface.

Puisqu’un Deque est une file à double extrémité, ce qui signifie que l’on peut manipuler les éléments à la fois au début et à la fin de la file, ses méthodes sont adaptées à cette caractéristique.

Méthodes

Quelques méthodes clés de l’interface Deque sont :

  • addFirst(element) : ajoute un élément au début du deque ;
  • addLast(element) : ajoute un élément à la fin du deque.

Il est évident que, dans un deque, il existe des méthodes pour ajouter au début et à la fin. Les noms de ces méthodes sont explicites. Examinons ces méthodes dans le code :

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addFirst("One"); deque.addLast("Two"); System.out.println("Deque: " + deque); deque.addFirst("Zero"); System.out.println("Deque after the `addFirst()` method: " + deque); } }

Comme vous pouvez le constater, après avoir utilisé la méthode addFirst(), l’élément a été ajouté au début de la deque. Cela la distingue de la méthode addLast().

Deque possède également une méthode add() classique, qui fonctionne de la même manière que la méthode addLast(). Le choix de la méthode à utiliser vous appartient donc entièrement.

Méthodes de suppression

S’il existe des méthodes pour ajouter des éléments au début et à la fin, il doit également y avoir des méthodes pour supprimer du début et de la fin de la deque.

  • removeFirst() : supprime et retourne l’élément du début de la deque ;
  • removeLast() : supprime et retourne l’élément de la fin de la deque.

Les méthodes addFirst() et addLast() effectuent la suppression des éléments du début et de la fin de la deque.

Examinons un exemple d’utilisation dans le code :

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); deque.removeFirst(); deque.removeLast(); System.out.println("Deque after the removal methods method: " + deque); } }

Comme vous pouvez le voir, nous avons supprimé le premier et le dernier élément de la deque, ne laissant que le deuxième élément.

C'est simple et pratique, et les noms des méthodes sont explicites.

Méthodes d'accès

Passons maintenant aux méthodes permettant d'accéder aux éléments d'une deque.

  • getFirst() : récupère, sans supprimer, l'élément situé en tête de la deque ;
  • getLast() : récupère, sans supprimer, l'élément situé en fin de deque.

Cela permet d'accéder aux premier et dernier éléments d'une file doublement terminée.

Voyons maintenant un exemple en code :

Main.java

Main.java

copy
123456789101112131415161718
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); String first = deque.getFirst(); String last = deque.getLast(); System.out.println("The first element in the deque: " + first); System.out.println("The last element in the deque: " + last); } }

En utilisant les méthodes getFirst() et getLast(), nous avons récupéré les premiers et derniers éléments de la deque et attribué ces valeurs à de nouvelles variables créées.

Dans l’interface Deque, il existe également les méthodes peekFirst() et peekLast(), qui résolvent le problème de la levée d’une exception. Au lieu de lancer une exception et d’arrêter le programme, elles renvoient null si la file est vide.

Examinons un exemple :

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); System.out.println("Deque: " + deque); String first = deque.peekFirst(); System.out.println("The first element in the deque: " + first); String last = deque.getLast(); System.out.println("The last element in the deque: " + last); } }

À partir de cet exemple, il est devenu évident qu’il est bien préférable d’utiliser les méthodes peekFirst() et peekLast() au lieu de getFirst() et getLast(), car elles n’interrompent pas le programme en cas d’erreur.

Cependant, il ne faut pas oublier l’exception NullPointerException ! Cette exception peut causer de nombreux problèmes dans votre programme.

Il existe également des méthodes alternatives équivalentes pour les méthodes addFirst(), addLast(), removeFirst() et removeLast(). Nous n’allons pas nous attarder dessus, car vous comprenez déjà le fonctionnement de ces méthodes, mais voici la liste :

Méthodes alternatives

Méthodes pour ajouter un élément à la deque :

  • offerFirst(E e) : ajoute un élément au début de la deque, si possible, et retourne true. Retourne false si l’ajout n’est pas possible ;
  • offerLast(E e) : ajoute un élément à la fin de la deque, si possible, et retourne true. Retourne false si l’ajout n’est pas possible ;
  • push(E e) : ajoute un élément au début de la deque, similaire à addFirst(). À noter que push() est également une méthode de pile dans la classe Deque.

Méthodes pour supprimer un élément de la deque :

  • pollFirst() : supprime et retourne le premier élément de la deque. Retourne null si la deque est vide ;
  • pollLast() : supprime et retourne le dernier élément de la deque. Retourne null si la deque est vide ;
  • pop() : supprime et retourne le premier élément de la deque, similaire à removeFirst().

Le choix dépend des exigences du programme. Il est toujours possible de tout résoudre avec un tableau classique, mais cela serait assez complexe et non optimisé. C’est pourquoi il existe autant de structures de données différentes — pour rendre l’écriture de divers programmes plus pratique.

1. Que signifie « Deque » ?

2. Quelle interface en Java représente une Deque ?

3. Quel est le but de la méthode addFirst() dans une Deque ?

4. Quelle méthode est utilisée pour récupérer, sans supprimer, le dernier élément d'une Deque ?

question mark

Que signifie « Deque » ?

Select the correct answer

question mark

Quelle interface en Java représente une Deque ?

Select the correct answer

question mark

Quel est le but de la méthode addFirst() dans une Deque ?

Select the correct answer

question mark

Quelle méthode est utilisée pour récupérer, sans supprimer, le dernier élément d'une Deque ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
some-alt