上的顺序-6ren"> 上的顺序-在我的代码中我有这个: Array blocks; 在不同的时间,对象被添加到该数组中,并且我需要定期检查其中哪些对象太旧并且需要删除。 我使用for指令: Array to_be_remov-6ren">
gpt4 book ai didi

java - "for"指令在 Array<> 上的顺序

转载 作者:行者123 更新时间:2023-12-02 06:10:36 24 4
gpt4 key购买 nike

在我的代码中我有这个:

Array<Block> blocks;

在不同的时间,对象被添加到该数组中,并且我需要定期检查其中哪些对象太旧并且需要删除。

我使用for指令:

    Array<Block> to_be_removed = new Array<Block>();
for (Block b : blocks) {
if (shouldBeRemoved(b)) {
to_be_removed.add(b);
}
}
blocks.removeAll(to_be_removed, true);

函数shouldBeRemoved的构造方式使得应删除的 block 始终是最旧的(已在其他 block 之前添加)。

我想要的是优化这个函数:如果我假设for循环将按照添加的顺序遍历对象,那么一旦我到达通过不检查其他 block 的条件,我可以打破循环并节省大量时间(通常每次迭代必须删除大约 5-9 个 block ,总共 25-35 个 block )。

我的问题是:我应该使用什么样的结构来确保 for 循环按对象的“年龄”迭代对象(即较旧的对象首先出现)。是ArrayListArrayListSet等吗?

谢谢!

最佳答案

如果您使用 ArrayList并始终使用 add(E object)添加新元素的方法(不使用指定新元素索引的重载方法),它将按照您想要的方式工作,根据 Android documentation ,它

Adds the specified object at the end of this ArrayList.

因此,当您使用 for ( : ) 循环列表时循环,它将从最旧的元素开始。

关于java - "for"指令在 Array<> 上的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931853/

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