[解決済み】Javaで最後のN個の要素を保持するサイズ制限のある待ち行列
2022-04-10 01:58:32
質問
Java ライブラリに関する簡単な質問です。
Queue
つまり、常に要素の追加を許可しますが、新しく追加された要素のためのスペースを確保するために、先頭の要素を静かに削除します。
もちろん、手動で実装するのは簡単だ。
import java.util.LinkedList;
public class LimitedQueue<E> extends LinkedList<E> {
private int limit;
public LimitedQueue(int limit) {
this.limit = limit;
}
@Override
public boolean add(E o) {
super.add(o);
while (size() > limit) { super.remove(); }
return true;
}
}
私の見る限り、Java stdlibsには標準的な実装はないようですが、Apache Commonsとかにはあるのかもしれませんね?
どのように解決するのですか?
Apache コモンズコレクション4は CircularFifoQueue<> というのは、あなたが探しているものです。javadocを引用します。
<ブロッククオートCircularFifoQueue は、固定サイズの先入れ先出しキューで、満杯になると最も古い要素に置き換わります。
import java.util.Queue;
import org.apache.commons.collections4.queue.CircularFifoQueue;
Queue<Integer> fifo = new CircularFifoQueue<Integer>(2);
fifo.add(1);
fifo.add(2);
fifo.add(3);
System.out.println(fifo);
// Observe the result:
// [2, 3]
Apache コモンズコレクションの古いバージョン(3.x)を使用している場合は CircularFifoBuffer これは基本的にジェネリックスなしで同じものです。
更新 : ジェネリックをサポートするcommons collections version 4のリリースに伴い、回答を更新しました。
関連
-
[解決済み】Javaセキュリティ。不正なキーサイズまたはデフォルトのパラメータ?
-
[解決済み] vbscriptでコレクションオブジェクトを作成する方法は?
-
[解決済み] MongoDBで複数のコレクションを一度にクエリする
-
[解決済み] List<> and/or Map<> クラス/ライブラリのタイプスクリプトはありますか?[クローズド]
-
[解決済み] Javaで、オブジェクトの大きさを決定する最も良い方法は何ですか?
-
[解決済み] Javaでバイトサイズを人間が読める形式に変換するにはどうしたらいいですか?
-
[解決済み] Mapを実装し、挿入順序を保持するJavaクラス?
-
[解決済み】Java 8 Lambda関数が例外を投げる?
-
[解決済み] javaでQueueオブジェクトをインスタンス化する方法を教えてください。
-
[解決済み] 過剰な要素を排除する固定サイズのキューはありますか?
最新
-
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 実装 サイバーパンク風ボタン