Java PriorityQueue Comparateur - Comment/Quand vous triez?
Je suis initialiser une File d'attente de Priorité comme:
strategy = new FuelPriority();
incoming = new PriorityQueue<Vehicle>(1, strategy);
Le code de mon Comparateur de classe est:
public class FuelPriority implements Comparator<Object> {
public int compare(Object o1, Object o2) {
Vehicle a1 = (Vehicle) o1;
Vehicle a2 = (Vheicle) o2;
return Integer.compare(a1.getFuelLevel(), a2.getFuelLevel());
}
}
Après l'exécution d'une simulation, les éléments ne sont pas ordonné à tous - ils sont aléatoires; j'ai mis un point d'arrêt dans la méthode de comparaison de mon FuelPriority
classe, mais elle n'était pas appelée à tous.
Suis-je manqué quelque chose?
OriginalL'auteur Connor Cartwright | 2014-04-01
Vous devez vous connecter pour publier un commentaire.
En dehors de la faute de frappe sur votre code, cela fonctionne pour moi.
Si vous souhaitez récupérer les valeurs dans l'ordre de tri, utilisation sondage ou peek. Plus précisément, changer le Système..println(entrant) avec while (!entrants.isEmpty()) { System..println(entrants.poll()); }
vous pouvez prendre un coup d'oeil à mon utilisation de PriorityQueue dans cette question? stackoverflow.com/questions/28800287/...
OriginalL'auteur Alexandre Santos
API dit que PriorityQueue itérateur n'est pas garanti pour parcourir les éléments de la file d'attente de priorité dans un ordre particulier. C'est seulement garanti le sondage, supprimer, coup d'oeil, et l'accès à l'élément de l'élément à la tête de la file d'attente (moins d'un élément
OriginalL'auteur Evgeniy Dorofeev