Bonsoir Yuri648,
Il est conseillé d'utiliser des instances de classes implémentant
Deque pour gérer les files (FIFO) et les piles (LIFO).
Tu peux donc utiliser aussi bien des
ArrayDeque que des
LinkedList.
Cependant pour les files il est conseillé d'utiliser des
ArrayDeque car l'implémentation des méthodes a une complexité en temps plus efficace que celles de la
LinkedList. Pour la pile par contre, rien n'est précisé (personnellement j'utiliserais une
LinkedList parce que si je l'implémentais moi-même ce serait plus efficace, mais le plus sûr serait de vérifier les algorithmes en regardant le code des 2 classes).
J'essayerai de regarder ça demain (je ne promets rien).
En tout cas, pour résumer, le mieux serait donc de faire :
Deque<Deque> pile = new LinkedList<Deque>();
Queue<TaClasse> file1 = new ArrayDeque<TaClasse>();
file1.add(new TaClasse());
Queue<TaClasse> file2 = new ArrayDeque<TaClasse>();
file2.add(new TaClasse());
pile.push(file1);
pile.push(file2);
Bon, en commentaire on va dire que dans l'interface
Deque, il y a beaucoup de méthodes qui font la même chose (c'est assez bien résumé dans l'API), parce que :
-
Deque étend elle-même d'autres interfaces (
Queue notamment)
- certaines méthodes ont le même nom que d'anciennes méthodes d'autres classes (que la classe
Stack par exemple, pour garder le même nom de méthode, certaines méthodes sont accessibles via plusieurs noms, comme
push() et
addFirst()).
Cordialement,