Classe FIFO en Java

Je veux implémenter FIFO dans une classe en Java.

Une telle classe existe-t-elle déjà? Sinon, comment puis-je implémenter le mien?

REMARQUE

J’ai trouvé une classe ici http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html , mais elle ne contient pas dmg.util. *. Je ne sais pas si un tel paquet existe même.

Vous recherchez toute classe qui implémente l’ interface de queue , à l’exception de PriorityQueue et PriorityBlockingQueue , qui n’utilisent pas d’algorithme FIFO.

Probablement, une LinkedList utilisant add (ajoute un à la fin) et removeFirst (supprime-en une de l’avant et la retourne) est la plus facile à utiliser.

Par exemple, voici un programme qui utilise une LinkedList pour mettre en queue et récupérer les chiffres de PI:

 import java.util.LinkedList; class Test { public static void main(Ssortingng args[]) { char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9}; LinkedList fifo = new LinkedList(); for (int i = 0; i < arr.length; i++) fifo.add (new Integer (arr[i])); System.out.print (fifo.removeFirst() + "."); while (! fifo.isEmpty()) System.out.print (fifo.removeFirst()); System.out.println(); } } 

Alternativement, si vous savez que vous voulez seulement le traiter comme une queue (sans les fonctionnalités supplémentaires d'une liste chaînée), vous pouvez simplement utiliser l'interface de Queue elle-même:

 import java.util.LinkedList; import java.util.Queue; class Test { public static void main(Ssortingng args[]) { char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9}; Queue fifo = new LinkedList(); for (int i = 0; i < arr.length; i++) fifo.add (new Integer (arr[i])); System.out.print (fifo.remove() + "."); while (! fifo.isEmpty()) System.out.print (fifo.remove()); System.out.println(); } } 

Cela a l'avantage de vous permettre de remplacer la classe concrète sous-jacente par n'importe quelle classe fournissant l'interface Queue , sans avoir à modifier trop le code.

Les modifications de base consistent à changer le type de fifo en Queue et à utiliser remove() au lieu de removeFirst() , ce dernier étant indisponible pour l'interface de la Queue .

L'appel de isEmpty() est toujours correct puisqu'il s'agit de l'interface Collection dont la Queue est un dérivé.

Essayez ArrayDeque ou LinkedList , qui implémentent toutes les deux l’interface de Queue .

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayDeque.html

Les files d’attente sont des structures First In First Out. Votre demande est assez vague, mais je suppose que vous n’avez besoin que des fonctionnalités de base qui sortent généralement des structures de files d’attente. Vous pouvez voir comment vous pouvez l’implémenter ici .

En ce qui concerne votre paquet manquant, il est fort probable que vous devrez télécharger ou créer le paquet vous-même en suivant ce tutoriel.

Vous n’avez pas à implémenter votre propre queue FIFO, regardez simplement l’interface java.util.Queue et ses implémentations

Si vous voulez avoir un canal pour écrire / lire des données, vous pouvez utiliser le http://docs.oracle.com/javase/6/docs/api/java/io/PipedWriter.html

Vous pouvez utiliser LinkedBlockingQueue Je l’utilise dans mes projets. Cela fait partie de Java standard et assez facile à utiliser