1

我有一个类包含与此问题相关的以下数据(Xpos、Ypos、Timestamp)

大小是一个 100x100 的区域(Xpos 和 Ypos),每个位置都有一个更新时间,即时间戳,然后给类一个新的时间戳以进行下一次更新。

现在我可以遍历所有这些数据点并找到时间戳已启动的任何类,并执行所需的操作。对我来说,这似乎效率低下。

或者我可以将它存储在一个排序列表中,时间戳是决定者,所以我只需要检查直到我发现一个尚未准备好更新的条目,更新它们并使用新的时间戳删除/读取它们。

现在我的目标是,可以通过通过 Xpos 和 Ypos 找到位置的工作流来修改预期的下一个时间戳,这意味着我必须再次遍历所有条目才能执行此操作。

我可以使用排序列表和 100x100 数组中的对象来解决这个问题,问题是通过 100x100 数组列表更新时间戳,不会更新其在排序列表中的位置。

有没有一种很好的方法来处理这种“双重排序”,而不必从时间戳触发点或从时间戳的数组更新中遍历完整列表。

4

1 回答 1

0

一种选择是将您的数据存储在优先队列中。C5 Collection Library将是一个不错的IntervalHeap选择。该IntervalHeap<T>.Replace方法允许您直接替换项目(即:更改其优先级,即Timestamp)。

于 2013-10-03T18:54:54.060 回答