2 votes

Faire une FIFO avec une file de 2

Je suis en train de faire une file d'attente qui priorise le premier objet dans la file qui devrait contenir au maximum deux objets. Pour ce faire, j'utilise java.util.Queue et à chaque pression d'une touche, la touche pressée est ajoutée en tant que chaîne dans la file en utilisant q.add(). C'est ce que je sais jusqu'à présent quoi faire.

Ma question est, comment puis-je faire en sorte que la file ne puisse contenir que deux objets et que si je maintiens la barre d'espace par exemple, elle n'ajoute pas plusieurs espaces à la file?

Je utilise KeyEvent et KeyListener pour prendre l'entrée des touches. Par "ne contenant que deux objets", je veux dire qu'elle ne devrait en contenir que deux à la fois, par exemple:

  • voici la file au début : [Espace, Entrée] (Entrée étant la dernière touche appuyée),
  • si j'appuie sur la touche P par exemple, la touche la plus ancienne devrait disparaître et la plus récente devrait déplacer toute la file d'une étape comme ceci: [P, Espace].
  • Si j'appuie sur entrée maintenant, l'Espace devrait disparaître et cela devrait ressembler à ceci: [Entrée, P]

1voto

Andrew Merrill Points 1328

Je pense que cela fera ce que vous voulez :

if (! qFIFO.contains(key)) {
    qFIFO.add(key);
    if (qFIFO.size() >= 3) {
        qFIFO.remove();
    }
}

0voto

Åke Points 53

J'ai découvert que je pouvais utiliser ce qui suit pour fixer la taille de la file d'attente à 2, la seule chose que je ne sais pas comment faire est d'empêcher de maintenir une touche enfoncée et de spammer.

if(qFIFO.size() == 3){
     qFIFO.remove();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X