gpt4 book ai didi

java - 添加到Android Studio中的列表,性能问题

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:34 25 4
gpt4 key购买 nike

我几天前发了这篇文章:Issues with a For-Each loop in Android Studio

我进行了建议的更改,即使用迭代器从 ArrayList 中删除对象,并且删除项目的性能问题已停止。这是更新后的 update() 方法:

public void update(){
float elapsedTime = (startTime - System.currentTimeMillis());
startTime = System.currentTimeMillis();

float speed = Constants.SCREEN_HEIGHT/10000.0f;


Iterator<Grass> i = grasses.iterator();
while(i.hasNext()){
Grass g = i.next();
g.incY(speed * elapsedTime);

if(g.getRect().top > Constants.SCREEN_HEIGHT){
int currY = 0;
int currX = g.getRect().left;
i.remove();
grasses.add(new Grass(currX, currY));

}
}
}

populateGrass 方法是相同的:

 private void populateGrass() {
for(int j = 0; j < ((double) Constants.SCREEN_HEIGHT / grassSize) + 1; j++) {
yStart = grassSize * (-2 + j);
for (int i = 0; i < (double) Constants.SCREEN_WIDTH / grassSize; i++) {
xStart = i * grassSize;
grasses.add(new Grass(xStart, yStart));
}
}
}

但是,问题转移到当我添加新草时,我遇到了抖动问题。我不认为帧率下降(尽管看起来就是这样)。我假设修复将类似于迭代器(即使它没有“添加”方法)。

我正在使用 ArrayList,不同类型的列表会有帮助吗?我的目标也是让整个屏幕充满无缝放置/移动的草。最终我会随着时间的推移改变速度,并为游戏添加更多内容。目前我有完美的行,但生成它们是令人紧张的。 “抖动”的副作用(我认为)是草在错误的 Y 坐标上生成,并且它们聚集在一起。

编辑:我忘了提及错误消息是相同的。 “并发修改异常”

最佳答案

是的,不同的列表提供不同的实现,只是以不同的速度为不同的函数提供相同的结果。

例如,ArrayList 比 LinkedList 更适合循环。这是因为 ArrayList 属性可以通过索引直接访问,而链表则必须遍历节点才能获取指定节点。

TL/DR:- 链接列表更适合添加/删除功能。- 数组列表更适合获取/设置

我在大学学到了这一点,否则可能需要问同样的问题。

引用: https://dzone.com/articles/arraylist-vs-linkedlist-vs

关于java - 添加到Android Studio中的列表,性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com