android使用ArrayLists

时间:2011-10-26 00:13:38

标签: arraylist

使用arraylist迭代游戏中的一组项目是一个“好主意”吗?

例如,如果我有5个“敌人对象”,那么使用它是明智的:

for (int e = 0; e < maxenemy; e++)
{
Enemy[e].Update();
}

或者我可以使用它与可比较的结果吗?

for(Enemy e : enemies)
{
Enemy.get(e).Update();
}

我正在尝试决定使用ArrayList是否可行,而不是使用“敌对象”的静态数组

5 个答案:

答案 0 :(得分:0)

Array和ArrayList之间的主要区别在于Array是固定大小的,而ArrayList不是并且可以不断增长。因此,如果你知道总会有5个敌人对象然后坚持使用数组,但是如果敌人对象的数量增加,那么使用ArrayList

编辑:

您的ArrayList示例有误。它应该是:

for(Enemy e : enemies)
{
 e.Update();
}

当你像这样迭代一个ArrayList时,e成为敌人列表中的一个真实的Enemy对象。所以你可以在电子邮件上调用敌人的方法。

答案 1 :(得分:0)

如果你有固定数量的敌人并且你总是只是遍历它们,那么阵列会更快一点。但是,如果您需要修改列表或执行更复杂的查询,ArrayList会更加灵活。

答案 2 :(得分:0)

嗯,如果你的游戏在其生命周期内获得或失去敌人,阵列列表可能会更好。静态数组将被修复并且不是非常灵活。我还注意到你的第二个代码片段可能更好地写成

for(Enemy e : enemies)
{
e.Update();
}

语法更简单,也许效率更高一些。 :d

答案 3 :(得分:0)

#2方式适用于所有设备,而#1仅适用于具有JIT的设备。

查看使用增强型For循环语法部分here

答案 4 :(得分:0)

出于多种原因,您应该使用ArrayList而不是裸数组:

  1. 虽然裸阵列解决方案会稍快一些,但几乎在所有情况下,差异都可以忽略不计。几乎可以肯定,性能瓶颈将出现在其他地方。

  2. 使用ArrayLists可以让您以后灵活地使用其他类型的List或Iterable。例如,您可能稍后意识到您需要能够动态添加和删除敌人,但您永远不需要索引到列表的中间 - 在这种情况下,链接列表会更好。

  3. 比较两种解决方案的代码:

  4. int m = enemies.length; for (int i = 0; i < m; i++) enemies[i].update();

    for (Enemy e : enemies) e.update();

    阵列版本更长,因此更容易出现错误。因此,提高代码质量最好使用ArrayList。