挿入順にトラバースする必要があるリストがあります。ただし、値に floorEntry と ceilingEntry を使用して「開始点」を見つけたいと考えています。
したがって、次の目的の操作を含むコレクションが必要です。
- 頻繁な挿入/末尾への追加
- 次のようにトラバースする必要があります。
- すべての値を検索 >= または <= (床、天井)
- 次に、これを挿入順にトラバースします
- 条件に一致する各アイテムを削除します
したがって、コレクションは挿入順にソートする必要がありますが、ソートされた値に基づいてランダム アクセスする必要もあります。
LinkedSortedMap のようなものはありますか? しかし、これがうまくいくかどうかはわかりません。
リンクリスト内の値の最初の floorEntry() を見つけるにはどうすればよいですか? リンクリストからすべての floorEntries を見つけるにはどうすればよいですか?
==============言い換えれば=============================
//I have timeseries of Ints.
TimeSeries<Int> collection = new LinkedList<>()
/*
FindAndRemove is to remove first n Ints that are <= x
*/
FindAndRemove1(Int x,int n) {
//return an iter to filtered subset of collection
iter = collection.floorEntrySet(x)
for (int i =0; i<n; i++) {
iter.remove()
if (!iter.hasnext) break;
iter->next
}
FindAndRemove2(Int x,int n) {
//return an collection.iter to oldest Int that is <= x
iter = collection.floorEntry(x)
for ( int i = 0; iter.hasnext; iter.next ) {
if ( iter.x > x )
continue;
iter.remove()
if ( ++i > n ) break;
}
}