私は(Javaで)画像のピクセルを中心点から外側に再帰的にトラバースする再帰的な画像処理アルゴリズムに取り組んでいます。
残念ながら、これによりスタック オーバーフローが発生します。そこで、Queue ベースのアルゴリズムに切り替えることにしました。
さて、これはすべて問題なくダンディーですが、予測可能な状態を維持せずに、そのキューが非常に短い時間で数千のピクセルを分析し、常にポップしてプッシュするという事実を考慮すると (長さ 100 の間のどこかになる可能性があります)。および 20000)、キューの実装には、非常に高速なポップおよびプッシュ機能が必要です。
リンクされたリストは、リスト内の他の要素を再配置せずに要素を自分自身にプッシュできるため、魅力的に見えますが、十分に高速であるためには、先頭と末尾 (または 2 番目の要素) の両方に簡単にアクセスできる必要があります。 -二重にリンクされていない場合は最後のノード)。悲しいことに、Java での連結リストの基礎となる実装に関連する情報を見つけることができないため、連結リストが本当に進むべき道であるかどうかを判断するのは困難です...
これは私の質問につながります。私がやろうとしていることに対して、Java での Queue インターフェースの最良の実装は何でしょうか? (キューの先頭と末尾以外のものを編集したり、アクセスしたりしたくありません。並べ替えなどはしたくありません。反対に、私は多くのプッシュを行うつもりです。とポップし、キューのサイズがかなり変化するため、事前割り当ては非効率的です)