Quand j'essaye:
Queue<Integer> q = new Queue<Integer>();
le compilateur me donne une erreur. De l'aide?
De plus, si je veux initialiser une file d'attente, dois-je implémenter les méthodes de la file d'attente?
Quand j'essaye:
Queue<Integer> q = new Queue<Integer>();
le compilateur me donne une erreur. De l'aide?
De plus, si je veux initialiser une file d'attente, dois-je implémenter les méthodes de la file d'attente?
Queue
est une interface. grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…Réponses:
A
Queue
est une interface, ce qui signifie que vous ne pouvez pas construireQueue
directement un .La meilleure option est de construire hors une classe qui implémente déjà l'
Queue
interface, comme un des éléments suivants:AbstractQueue
,ArrayBlockingQueue
,ArrayDeque
,ConcurrentLinkedQueue
,DelayQueue
,LinkedBlockingQueue
,LinkedList
,PriorityBlockingQueue
,PriorityQueue
ouSynchronousQueue
.Une alternative est d'écrire votre propre classe qui implémente l'interface de file d'attente nécessaire. Ce n'est pas nécessaire sauf dans les rares cas où vous souhaitez faire quelque chose de spécial tout en fournissant au reste de votre programme un fichier
Queue
.Une alternative encore moins utilisée est de construire une classe anonyme qui implémente
Queue
. Vous ne voulez probablement pas faire cela, mais c'est répertorié comme une option pour couvrir toutes les bases.la source
Queue
... mais +1 quand même.ArrayDeque
Queue
est une interface. Vous ne pouvez pas instancier une interface directement, sauf via une classe interne anonyme. Ce n'est généralement pas ce que vous voulez faire pour une collection. Au lieu de cela, choisissez une implémentation existante. Par exemple:ou
En règle générale, vous choisissez une implémentation de collection en fonction des performances et des caractéristiques de concurrence qui vous intéressent.
la source
Puisqu'il
Queue
s'agit d'une interface, vous ne pouvez pas en créer une instance comme vous l'avez illustréla source
java.util.Queue
est une interface. Vous ne pouvez pas instancier des interfaces. Vous devez créer une instance d'une classe implémentant cette interface. Dans ce cas, une LinkedList est une telle classe.Stack<String> stack = new Stack<>(); stack.push("a"); stack.push("b"); System.out.println(stack.pop());
import java.util.Stack;
La file d'attente est une interface; vous ne pouvez pas explicitement construire une file d'attente. Vous devrez instancier l'une de ses classes d'implémentation. Quelque chose comme:
Voici un lien vers le tutoriel Java sur ce sujet.
la source
L'interface Queue étend java.util.Collection avec des opérations d'insertion, d'extraction et d'inspection supplémentaires telles que:
+offer(element: E):
booléen // Insertion d'un élément+poll(): E
// Récupère l'élément et retourne NULL si la file d'attente est vide+remove(): E
// Récupère et supprime l'élément et lève une exception si la file d'attente est vide+peek(): E
// Récupère, mais ne supprime pas, la tête de cette file d'attente, retournant null si cette file d'attente est vide.+element(): E
// Récupère, mais ne supprime pas, la tête de cette file d'attente, lève une exception si la file d'attente est vide.Exemple de code pour l'implémentation de la file d'attente:
Sortie du code:
la source
Queue est une interface en java, vous ne pouvez pas faire ça.
Au lieu de cela, vous avez deux options:
Option 1:
Option 2:
Je recommande d'utiliser l'option2 car elle est un peu plus rapide que l'autre
la source
La file d'attente en Java est définie comme une interface et de nombreuses implémentations prêtes à l'emploi sont présentes dans le cadre de la version JDK. En voici quelques-uns: LinkedList , Priority Queue, ArrayBlockingQueue, ConcurrentLinkedQueue, Linked Transfer Queue, Synchronous Queue, etc.
SO Vous pouvez créer n'importe laquelle de ces classes et la conserver comme référence de file d'attente. par exemple
Vous pouvez également implémenter votre propre Queue personnalisée implémentant l'interface de Queue.
la source
Queue
est une interface en java, vous ne pourriez pas faire cela. essayer:la source