【发布时间】:2016-11-22 23:15:12
【问题描述】:
因此,我正在开展一个项目,该项目需要对一组客户端进行迭代以进行更新,每个客户端都需要为附近的每个其他客户端提供更新数据包。我希望能够以快速的方式执行此操作,因为大量客户端会以经常发生的间隔进行更新。
我最初的攻击计划是根据客户端位置创建区域,仅使用其区域中的其他客户端更新每个客户端。这将需要一个LinkedList<Region>,该区域有自己的客户端列表,这些客户端将相互更新。这种方法的一个问题是,一些地区可能有 1 个客户端,而另一些地区可能有 1000 个客户端。另一个难度来自客户端将不断移动(从而改变位置和地区)这一事实。如果有一种方法可以在迭代列表时修改列表,则可以避免这些问题,当区域变得太大时可能会拆分元素。
接下来我想创建一个大型List<Client> 来容纳所有玩家,并根据位置不断地对其进行排序。然后用最近的 20 个客户端更新列表中索引 n 的客户端,我只会从他们当前的索引中迭代 n-10 和 n+10。我不太喜欢这种方法,因为如果在附近区域有第 21 个客户,即使他们与n 的客户的距离与n+10 的客户距离相等,也可以忽略它们。每次滴答都要诉诸所有客户似乎也很慢。
在速度方面,这些方法中哪一种提供了更好的性能?此外,还有其他我应该考虑的 Java 集合吗?谢谢!
【问题讨论】:
标签: java performance list collections big-o