2012-04-04 5 views
0

タイトルは実際に私が実際に探しているものを言いません。固定長のLinkedListバリアントを探す

は私が探している私は、反復処理できるJava用リンクリストの変種ですが、方法で、固定長の何かを持っています。あなたが見

は、私がテレメトリプラグインから取得したデータと、Kerbal宇宙計画にシミュレートされた人工衛星の地上パスを追跡します。しかし、私は最後の約2時間に渡って地面の道を表示したいだけです。データ全体がリンクされたリストに書き込まれるようになりましたが、時間がたつにつれてリストは長くなり、長くなり、最終的にはこのリストを反復して軌道の最後の2時間のデータを取得するのに時間がかかります

したがって、私が探しているリンクリストの変形は、長さと最新の間の時間(エントリ)を削除すると、最後のエントリ(エントリ)を削除するやや固定長になります。エントリは2時間以上のミッション時間です。そのため、以前のフライトのデータセット全体ではなく、比較的少数のエントリだけを反復する必要があります(CSVにバンプするために保存されています)。

こちらのお手伝いをさせていただきありがとうございます。

+0

[この](http://stackoverflow.com/questions/1963806/is-there-a-fix-sized-queue-which-removes-excessive-elemets)答えは役に立つだろうか? –

+1

これはあなたを助けるはずです:http://stackoverflow.com/questions/1963806/is-there-a-fix-sized-queue-which-removes-excessive-elemets – ahanin

+0

私はすでにそれを試みましたが、それは動作しません私はそれが働きたい。 – Warringer

答えて

2

ただ、定期的にLinkedListの終わりをトリミングスレッドを維持します。これに特別なことは必要ありません。どんなQueue実装もおそらく動作します。 ArrayDequeが最適かもしれません。

これは、あまりにも古い要素をスローするラッパーQueueの実装を使用してLinkedListをデコレートします。

+0

Hmmm ...アイデアはいいですね。しかし、私はスレッドでうまくいくわけではありませんし、それらを使用しているので、私は新しいエントリが追加された場合、最後のエントリをトリミングすることができる場合、自動的に見えるものを使用しようとします。 – Warringer

1

Louis Wassermanの提案通りにキューを使用することをお勧めします。しかし、考慮すべき他の可能性はcircular linked listです。

これは単にあなたが問題を記述したとして、私の心に入って来た最初のデータ構造であり、私はそれが最も自然に合うと思います。残念ながらとき、私はほぼすべてのリストの実装をラップすることをお勧め

+0

私が探しているLinkdリストは、同じ期間にわたって常に同じ数のエントリがあるわけではないので、「固定期間」にわたって、長さが動的になります。 – Warringer

+0

@Warringer - 私の誤解。ああ、待ち行列はおそらく最高だった – gnomed

0

...私はJavaから利用可能なネイティブ循環リンクリストの実装を知りませんので、あなたはこれをしなかった場合、あなたはあなた自身を実装するか、サードパーティのコードを使用する必要がありますリストに追加した要素をリストの最後の要素と比較し、時間差が2時間を超える場合は最後の要素を削除します。

+0

私は最初の答えから自分自身を得たが、とにかくありがとう。 :) – Warringer