[解決済み] Java Queueの最適な実装は?
質問
私は、画像のピクセルを中心点から外側に向かって再帰的に走査する再帰的画像処理アルゴリズムに取り組んでいます(Javaで)。
残念なことに、それはスタックオーバーフローを引き起こします。そこで、キューベースのアルゴリズムに変更することにしました。
しかし、キューが非常に短い時間で何千ものピクセルを分析し、常にポッピングとプッシュを行い、予測可能な状態を維持しない(長さが100から20000の間のどこかになる)ことを考えると、キューの実装は非常に高速なポッピングとプッシュ能力を持つ必要があるのです。
リンクリストは、リスト内の他の要素を並べ替えることなく自分自身に要素をプッシュできるため魅力的に見えますが、十分に高速であるためには、その先頭と末尾(2重にリンクされていない場合は最後から2番目のノード)の両方に簡単にアクセスできる必要があります。悲しいことに、Javaのリンクリストの基本的な実装に関連する情報が見つからないので、リンクリストが本当に望ましい方法かどうかを判断するのは難しいのですが...。
そこで、私の疑問が生まれました。私が行おうとしていることに対して、JavaにおけるQueueインターフェースの最良の実装は何でしょうか?(私はキューの先頭と末尾以外のものを編集したり、アクセスしたりすることを望んでいません。) 私はどんな並べ替えや何かをすることを望んでいません。一方、私は多くのプッシュとポップを行うつもりで、キューのサイズはかなり変更されるため、事前割り当ては非効率的でしょう)
どのように解決するのですか?
使用する。
Queue<Object> queue = new LinkedList<>();
を使用することができます。
.offer(E e)
を使えば、キューに要素を追加することができます。
.poll()
でキューを解放し、キューの先頭(最初の要素)を取得します。
Javaでは、インターフェイス
Queue
は、その
LinkedList
は実装を提供した。
また、HeadとTailの要素への参照も保持しており、これらは以下の方法で取得することができます。
.getFirst()
と
.getLast()
をそれぞれ作成します。
キューのインターフェイスを提案した @Snicolas に感謝します。
関連
-
[解決済み] double 型を Int 型に変換、切り捨て
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない
-
[解決済み] java.io.IOException。DER長の短い読み取り