Swing 动画运行速度极慢
问题: 在 Swing 中添加模拟汽车的多个 JPanel 表示时速度严重减慢动画。
描述:
正在使用 Java Swing 实现涉及汽车到达的离散事件模拟。 Car 类代表单个车辆,具有当前位置和速度等相关属性。在每个预定的汽车到达事件中,一个 Car 对象被添加到 Model 类中的 ArrayList 中。
在 View 类中,一个单独的线程不断迭代 Car 对象的 ArrayList,调用它们的 move() 方法并更新他们的 JPanel 表示。
问题:
最初,动画几辆车沿着一条路行驶,很平稳。然而,随着汽车数量的增加,动画变得慢得令人痛苦。
分析:
性能下降的原因怀疑是对 ArrayList 的过度访问。每辆车的位置是通过调用 move() 方法来更新的,这需要系统从 ArrayList 中检索对象,然后修改其属性。随着对象数量的增加,这个重复的过程变得越来越低效。
解决方案:
不要重复访问 ArrayList,这是一种可以更快查找和检索的数据结构推荐对象。一种合适的选择可能是 HashMap,其中每个 Car 对象都映射到一个唯一的键(例如,其标识符)。通过使用 HashMap,无论列表中的对象数量有多少,都可以在恒定时间 (O(1)) 内完成汽车位置的检索。此外,可以利用定期垃圾收集从 ArrayList 中删除不必要的对象并优化内存使用。
以上是添加许多汽车后,为什么我的摇摆车动画如此缓慢?的详细内容。更多信息请关注PHP中文网其他相关文章!