Ich arbeite (in Java) an einem rekursiven Bildverarbeitungsalgorithmus, der rekursiv die Pixel des Bildes nach außen von einem Mittelpunkt aus durchquert.Beste Implementierung der Java-Warteschlange?
Leider verursacht das einen Stack Overflow. Also habe ich mich entschieden, zu einem Queue-basierten Algorithmus zu wechseln.
Nun, das ist alles in Ordnung und Dandy- aber in Anbetracht der Tatsache, dass es Warteschlange wird Tausende von Pixeln in sehr kurzer Zeit zu analysieren, während ständig knallen und drücken, OHNE einen vorhersehbaren Zustand (Es könnte überall sein zwischen 100 und 20000); Die Warteschlangenimplementierung muss über sehr schnelle Popping- und Push-Fähigkeiten verfügen. Eine verknüpfte Liste scheint attraktiv zu sein aufgrund ihrer Fähigkeit, Elemente zu sich zu schieben, ohne etwas anderes in der Liste neu anzuordnen, aber um schnell genug zu sein, würde sie leichten Zugang zu ihrem Kopf UND ihrem Schwanz benötigen (oder vorletzter Knoten, wenn es nicht doppelt verknüpft wäre. Leider kann ich keine Informationen über die zugrunde liegende Implementierung von verketteten Listen in Java finden, daher ist es schwer zu sagen, ob eine verkettete Liste wirklich der richtige Weg ist ...
Das bringt mich zu meiner Frage. Was wäre die beste Implementierung der Warteschlangenschnittstelle in Java für das, was ich vorhabe? (Ich möchte nichts anderes bearbeiten und auch nicht zugreifen, als den Kopf und das Ende der Warteschlange - ich möchte keine Neuanordnung oder irgendetwas anderes machen. Auf der anderen Seite möchte ich viel pushen und knallen, und die Warteschlange wird die Größe ziemlich ändern, so wäre die Vorbelegung ineffizient)
Vielleicht müssen Sie zurücktreten und darüber nachdenken, ob es einen besseren Weg gibt, als tausende einzelne Pixel nacheinander in eine Datenstruktur zu schieben (wenn Sie das tatsächlich tun). – Thilo
Es ist ein Blob-Erkennung Algorithmus, die Idee ist, dass es von einem Punkt auf dem Blob beginnt und nach außen bis zum Rand des Blobs durchläuft. Ich glaube nicht, dass es andere (einfache) Wege gibt, dies zu tun. Außerdem speichert die Warteschlange nur Punkte von Interesse - sie hält die Pixel in der Warteschlange nicht wirklich, die Warteschlange dient hauptsächlich dazu, zu verfolgen, wo sie sich befindet. Ähnlich wie bei vielen Pfadfindungsalgorithmen –