什么是代表赛马的好数据集?

Evi*_*ine 5 java collections arraylist data-structures

我有一个赛道对象,它是一个ArrayList,它接收Horse对象.我选择了ArrayList,因为它易于实现.然而,使用ArrayList的缺点是我无法轻松跟踪每匹马的位置,而无需昂贵地迭代整个集合.例如,如果我想找到彼此相距X个距离的2匹马,我将不得不迭代n^2一次.

有没有更好的策略来做到这一点?

编辑:很多要求特定于我的种族模型,所以我在这里详细说明.

每次迭代都会更新模型.因此,每匹马都有自己的速度,加速度,行进距离等,并且通过集合的每次迭代都会更新这些值.如果一匹马靠近另一匹马,则需要减速,我打算通过比较它们的"行驶距离"值来做.

小智 1

我想您可以将 Horse 对象添加到 TreeSet 集合中。您应该在 Horse 类中实现 Comparable 接口并重写compareTo() 方法,从而按距离对马进行排序。然后,您可以在 treeSet 上使用特定操作,例如“higher()”,它将返回第一匹跑得比给定马数多的马,等等。您可以在此处阅读有关此集合的更多信息。此外,所有操作的时间复杂度均为 O(lgN)。

  • 这里需要注意的是,如果影响排序顺序的值的属性在插入后发生更改,TreeSet 不会自动重新排序。 (3认同)