java - 如何在列表中存储二维数组坐标(不使用列表容器?)

标签 java arrays

首先我做了作业, 我已经检查过了: How to store 2D Array coordinates in a list in java

我创建了自己的 Vector2 类(如 XNA)。 我认为如果我使用列表并每帧访问列表,它可能会减慢我的游戏速度:S

我需要每帧访问这个数组,所以我真的想知道我是否可以以高效的方式创建它们(不使用列表或类,只是一些基本类型,如 int[])。

提前致谢!

编辑:
只需访问该数组(该数组将在 init 上创建),因为我需要在游戏中的每一帧搜索该数组的元素。我确实想尝试 Vector2[].. 购买效率 y'konw ^^

编辑*2:呃,我对 JAVA 真的很陌生。 “ map ”你的意思是使用 map 来存储Vector2?

最佳答案

在 Java 中,数组(大部分)是对象。这就是为什么你可以做这样的事情

int[] b = { 2, 4, 5 };
System.out.println(b.length);

我知道您关心速度;然而,尝试在 Java 中以非面向对象的方式进行编程并不能加快程序速度。 JVM 经过大量优化,使面向对象的代码能够快速运行。

更多地关注您的算法。如果您可以保留“要更新”项目的列表,而不是迭代所有项目的列表,那么无论数据结构如何,您都将大大加快程序速度。只有在确定数据结构是缓慢的部分之后才去购买更好的数据结构实现。

过早优化意味着您在确定代码部分正在影响程序速度之前就开始快速编写代码(这通常意味着您做出很大的让步以降低可读性)。在您意识到只有 5% 的问题导致代码变慢之前,您不想让关键代码的一部分变得不可读。

Semi-recent benchmarking puts a correctly sized ArrayList within 3% of the speed of a raw array 。如果您将原始数组包装在一个对象中,则围绕其嵌入数组的 ArrayList 的库存实现很有可能要快得多。

关于java - 如何在列表中存储二维数组坐标(不使用列表容器?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7954658/

相关文章:

c - 什么是替换 2D (10x10) int 数组中重复元素的有效方法

Java 语法 : byte f()[] vs. byte[] f()

javascript - 调整 Javascript 代码来控制 body 的滚动

C++ vector : Why is this piece of code not working?

java - java XML序列化向节点添加属性

java - 将数组传递给排序方法以查找其执行时间

java - 使用arraylist而不是array

java - 在 iFrame 中添加 GWT 应用程序的问题

java - 导入外部 jar 但仍然出现 "Cannot be resolved"错误

java - 添加重复字符串的数量