我有一个需要按插入顺序遍历的列表。但是,我想通过在值上使用 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;
}
}