Java 命令;至于;数组上的指令<&燃气轮机;

Java 命令;至于;数组上的指令<&燃气轮机;,java,android,arrays,for-loop,Java,Android,Arrays,For Loop,在我的代码中,我有: Array<Block> blocks; 函数shouldBeRemoved的构造方式应确保应删除的块始终是最旧的(在其他块之前添加) 我想要的是优化这个函数:如果我假设for循环将按照对象添加的顺序迭代对象,,那么一旦我到达一个不应该删除的块,我就可以中断循环并节省大量时间(通常,在25-35个迭代中,每次迭代都必须删除大约5-9个块),方法是不检查其他块的条件 我的问题是:我应该使用什么样的结构来确保for循环按对象的“年龄”(即先出现较老的对象)迭代对象

在我的代码中,我有:

Array<Block> blocks;
函数
shouldBeRemoved
的构造方式应确保应删除的块始终是最旧的(在其他块之前添加)

我想要的是优化这个函数:如果我假设
for
循环将按照对象添加的顺序迭代对象,那么一旦我到达一个不应该删除的块,我就可以中断循环并节省大量时间(通常,在25-35个迭代中,每次迭代都必须删除大约5-9个块),方法是不检查其他块的条件

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


谢谢!

如果您使用
ArrayList
并始终使用
add(E object)
方法来添加新元素(而不是使用指定新元素索引的重载方法),那么它将按照您的意愿工作

将指定的对象添加到此ArrayList的末尾


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

您可以使用a。它实现了界面,因此它提供了
add
poll
来在末尾添加元素,然后在前面删除它们。如果对象的数量在25-35之间,并且您正在删除atmost 10,我认为您拥有的很好。看起来您正在寻找一个早期的优化。记住这个谚语-<代码>过早优化是万恶之源<代码>。也就是说,如果你的<代码>逻辑应该是很复杂的,也许你应该集中精力。考虑执行<代码>比较器<代码> >接口> <代码> Bug <代码>。但是,再一次,我可能已经使它MOR。比现在复杂得多。
    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);