2 votes

Conversion de ArrayList en PriorityQueueue + java

J'ai ce problème que j'avais utilisé Arraylist dans tout mon programme jusqu'à maintenant et maintenant j'ai besoin que son fonctionnement soit aussi celui d'une file d'attente prioritaire.

Alors j'ai fait ce qui me semblait le plus évident et je l'ai jeté comme PriorityQueue z = (PriorityQueue) x où x est une liste de tableaux.

Au moment de l'exécution, une erreur s'est produite, indiquant que ce n'était pas possible.

Existe-t-il un moyen simple de faire fonctionner ce système ? Je ne peux pas changer toute la liste de tableaux en file d'attente prioritaire car je devrais alors mettre à jour toutes les fonctions utilisées......

Dois-je ajouter chaque fois un élément de la liste de tableaux à une nouvelle file d'attente prioritaire ou existe-t-il une meilleure méthode ?

Merci beaucoup...

5voto

Justin Thomas Points 3292
PriorityQueue pq = new PriorityQueue();
pq.addAll(x);

0voto

Edwin Buck Points 33097

Une file d'attente prioritaire est associée à beaucoup de code supplémentaire pour s'assurer que les éléments de la file d'attente prioritaire sont ordonnés par priorité. Une liste de tableaux n'a pas ce code, donc vous ne pouvez pas simplement la transformer en une file d'attente prioritaire.

En général, les choses peuvent être montées sans danger, mais vous essayez de descendre quelque chose ici. Vous ne pouvez pas le faire, car il n'y a aucune garantie que la liste du tableau soit ordonnée avec une quelconque priorité. Il n'est pas non plus garanti que les structures de données sous-jacentes qui implémentent les deux en interne soient les mêmes.

0voto

Mike Samuel Points 54712

Il n'y a pas de méthode simple. Un site ArrayList met en œuvre List mais pas l'interface Queue .

La création d'une nouvelle file d'attente à partir du contenu de la liste est probablement la plus simple.

Si vous savez que le contenu est trié par priorité et que vous devez être très efficace, essayez de l'entourer d'une balise de type Queue soutenu par votre ArrayList si vous avez besoin d'un objet de type file d'attente à un seul endroit, mais que vous utilisez List pour de bonnes raisons ailleurs.

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