LIFOデータ構造クラスによってアイテムを追加するたびに古いアイテムを自動的に破棄するMAXアイテムサイズを指定できるJavaでは、MAXサイズを超えます。最大N個のアイテムを保持するLIFOデータ構造
2
A
答えて
3
Stack
をサブクラス化して、目的の動作を得ることができます。あなただけのサイズがNよりも大きいかどうかをチェックし、古い項目を破棄するpush()
をオーバーライドする必要があります:
@Override
public void push(E elt) {
super.push(elt);
while (this.size() > this.maxSize) {
this.removeElementAt(this.size() - 1);
}
}
はおそらくあなたが望むものに近くなります。
0
Javaではこのような構造はありません。私は、このカスタム実装がニーズを提供しています願っています:
BlockingDeque<Object> deque = new LinkedBlockingDeque<Object>(32) {
public void push(Object e) {
final java.util.concurrent.locks.ReentrantLock lock;
try {
Field lockField = LinkedBlockingDeque.class.getDeclaredField("lock");
lockField.setAccessible(true);
lock = (ReentrantLock) lockField.get(this);
} catch (NoSuchFieldException e1) {
throw new RuntimeException(e1);
} catch (SecurityException e1) {
throw new RuntimeException(e1);
} catch (IllegalArgumentException e1) {
throw new RuntimeException(e1);
} catch (IllegalAccessException e1) {
throw new RuntimeException(e1);
}
lock.lock();
try {
if (!offerFirst(e)) {
pollLast();
offerFirst(e);
}
} finally {
lock.unlock();
}
}
};
は、その後、あなたは(キューが古いStackクラスを置き換える)スタックのようにそれを使用します。
deque.push(new Object());
Object o = deque.pop();
すべてのロックのもののため申し訳ありませんが、それが必要でした矛盾を避けるために。
関連する問題
- 1. 大量のデータを保持するのに最適なデータ構造ですか?
- 2. 最新のn個のレコードをクエリ用に保存するスパーク構造のストリーミング
- 3. 上位n個の要素をソート順に保つための最良のデータ構造は何ですか?
- 4. バックアップスクリプト:最後のN個のエントリを保持する方法は?
- 5. 最後のN個のアイテムを保持し、リストボックスから他のアイテムを削除します。
- 6. n個の要素を持つ配列の最大数
- 7. n個のセット間の最大交点
- 8. 最大10個の数字を保持する
- 9. 保存するデータ構造
- 10. 時系列の最後のn個のアイテムを選択する
- 11. キューから最後のn個のアイテムを取得する
- 12. 最近のn個のアイテムをActiveRecordで平均する方法
- 13. 構造化配列Pythonの中で最も関連性の高いアイテムを10個保存する
- 14. キーワードを保持する最も効率的なデータ構造は何ですか?
- 15. 遷移確率を保持するためのデータ構造HMM
- 16. クラスタリング - 最大のn個のクラスタをプロットする
- 17. 最大n個のディレクトリを作成する
- 18. mongodbのnからn個のアイテムを取得する方法
- 19. レンジキーで値を保持する構造
- 20. N個のノードを持つグラフの長さ2の最大パス数
- 21. ファイルにn個の重複したエントリを保持する
- 22. データ構造を持つUnordered_map
- 23. 各アイテムにn個の画像を持つ方法
- 24. Elasticsearch 5:最新のn個のアイテムのプロパティ値の集計
- 25. Python Spark-Streamingはn個の最大キーを取得します
- 26. N個のアトリビュートで最大値グループを返す
- 27. グループあたり最大n個のコンテンツを返すとき
- 28. 最大でn個のJavaスレッドを実行しています
- 29. マスターノードにデータ構造を維持する
- 30. 重複したアイテムを保持/追加/削除するための効率的なデータ構造
循環バッファとして編成された配列ですか? – dasblinkenlight
Javaは分かりませんが、入力、出力、およびチェックをコレクションオブジェクトのように制御するクラスを作成できます。 –