2017-12-19 19 views
1

Ich habe ein Problem, wenn PriorityQueue.peek() null zurückgibt, wenn PriorityQueue.size()> 0 auf Android.Warum gibt PriorityQueue.peek() null zurück, wenn PriorityQueue.size()> 0

enter image description here

Ich denke, das Gerät Problem sein könnte. Hat jemand etwas im Sinn?

+1

Ausgehend von der [JavaDoc] (https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html#peek()), 'peek' wird nur' zurückgeben null, wenn es das Kopfelement ist oder wenn die Warteschlange leer ist. Ich sehe, dass Ihre "Push" -Methode auf "null" prüft, aber sind Sie sicher, dass es keine andere Möglichkeit gibt, eine "Null" in die Warteschlange zu schieben? Könntest du als Protokollausgabe für das head-Element oder debuggen? Und posten Sie bitte ein minimales, ausführbares Beispiel, das den Fehler anstelle eines Bildes erzeugt, so dass die Leute es ausprobieren können. –

+0

Kopf der Warteschlange muss null sein –

+0

Danke für die Antworten. Das einzige Szenario ist möglich, dass der Kopf der Warteschlange null ist. Müssen herausfinden, wie das passiert ist. –

Antwort

0

Ich sehe zwei folgenden Lösungen:

  • ersetzen jobs.peek() = null mit jobs.size()> 0 - Sie in der Größe interessiert sind, richtig!?
  • Überprüfen Sie, was in der Jobs Warteschlange ist. Aufgrund der Java-Dokumentation (https://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html) - sollte peek() "< ...> den Kopf dieser Warteschlange abrufen oder null zurückgeben, wenn diese Warteschlange leer ist.". Entweder ist diese Warteschlange leer oder es gibt ein Element mit dem Wert null darin.
Verwandte Themen