0

簡単に説明するのは難しいので、タイトルは私が実際に探しているものを実際には示していないことを私は知っています。

私が探しているのは、反復できるJavaのリンクリストバリアントですが、ある意味で固定長のものがあります。

ほら、テレメトリプラグインから取得したデータを使用して、KerbalSpaceProgramでシミュレートされた衛星の地上経路を追跡したいと思います。しかし、私は過去約2時間の地上経路のみを表示したいと思います。これで、データ全体がリンクリストに書き込まれますが、時間が経つにつれてリストはどんどん長くなり、最終的には非常に大きくなるため、軌道の最後の2時間のデータを取得するためにこのリストを反復処理するのに時間がかかります。新しいデータセットが入るまでに時間がかかります。

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

このあたりの親切な人々によって提供されるかもしれないどんな助けにも感謝します。

4

3 に答える 3

2

の終わりを定期的にトリミングするスレッドを維持するだけLinkedListです。これには特別なことは何も必要ありません。どんなQueue実装でもおそらくうまくいくでしょう。ArrayDeque最高かもしれません。

または、古すぎる要素をLinkedList破棄するラッパー実装でを飾ります。Queue

于 2012-04-04T18:09:32.257 に答える
1

Louis Wasserman が提案したキューを使用することをお勧めします。しかし、考慮したい可能性があるもう 1 つの可能性は、循環リンク リストです。

これは、あなたが問題を説明しているときに頭に浮かんだ最初のデータ構造であり、最も自然に当てはまると思います。残念ながら、Java から利用できるネイティブな循環リンク リストの実装については知りません。そのため、これを行う場合は、独自に実装するか、サード パーティのコードを使用する必要があります...

于 2012-04-04T18:14:32.783 に答える
0

リストに追加するときに、ほとんどすべてのリスト実装をラップすることをお勧めします。リストに追加したばかりの要素をリストの最後の要素と比較し、時間差が 2 時間より大きい場合は最後の要素を削除します。

于 2012-04-04T18:20:23.113 に答える