1
votes

Pourquoi ne puis-je pas utiliser "String" comme paramètre pour une file d'attente prioritaire?

J'essaie d'implémenter l'algorithme A * dans Processing 3, et j'ai décidé d'utiliser une grille de priorité pour stocker et hiérarchiser les nœuds explorables. Je venais de décider de faire un test simple pour m'assurer que je connaissais la syntaxe, mais quand j'essaie de définir le type de la file d'attente sur "String" ou "Integer", j'obtiens l'erreur Le type filename.PriorityQueue n'est pas générique; il ne peut pas être paramétré avec des arguments Une idée de la raison pour laquelle cela se produit?

import java.util.PriorityQueue;
import java.util.Comparator;

public class Test {
    public void main(String[] args) {
      PriorityQueue<String> pq= new PriorityQueue<String>(5,(a,b) -> a.length() - b.length());
    }
}


3 commentaires

Veuillez mettre à jour votre question pour refléter le code d'erreur exact, car votre message d'erreur suggère fortement que vous ne l'avez pas copié exactement ou que ce n'est pas le code réel.


Veuillez mettre à jour votre code source complet. Ce message d'erreur signifie que vous avez une autre classe PriorityQueue dans votre source. Je pense.


Veuillez ne pas mettre à jour le titre avec "* Résolu *". Cliquez sur la coche à côté de la réponse qui est la meilleure réponse à la question pour accepter cette réponse comme la réponse à votre question. Vous devez également cliquer sur la flèche vers le haut à côté de toutes les réponses que vous avez trouvées utiles.


3 Réponses :


2
votes

Avez-vous importé la file d'attente prioritaire de java.util? sinon alors:

import java.util.PriorityQueue;


0 commentaires

3
votes

Il semble que vous ayez un fichier appelé filename.java qui a un type appelé PriorityQueue qui ne prend pas de génériques. Vous devriez probablement supprimer ce fichier, puis importer la PriorityQueue de votre choix:

import java.util.PriorityQueue;


2 commentaires

Désolé, j'avais mal formaté mon message. J'avais en fait ajouté cela, et "filename.java" est juste le fichier dans lequel se trouve ce code.


@TaoGroves Puisque la classe est nommée Test et est public , le nom du fichier source doit être Test.java .



0
votes

Résolu. J'étais incroyablement stupide et j'avais accidentellement créé un fichier PriorityQueue dans le même dossier. Merci pour les réponses rapides.


0 commentaires