在我的代码中我有这样一个:
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的构造方式使应该删除的块始终是最古老的(在其他块之前添加)。
我想要优化这个函数:如果我假设for循环将按照添加对象()的顺序遍历对象(),那么一旦我到达一个不应该删除的块,我就可以中断循环,节省大量时间(通常每次迭代时必须从25-35个块中删除大约5-9个块),方法是不检查其他块的条件。
我的问题是:我应该使用什么样的结构来确保for循环根据对象的“年龄”来迭代它们(即,旧的循环首先出现)。是Array,List,ArrayList,Set等吗?
谢谢!
发布于 2014-02-21 10:37:47
如果您使用ArrayList并始终使用add(E object)方法添加新元素(而不是使用指定新元素索引的重载方法),那么按照Android文档的说法,它将按您的需要工作。
在此ArrayList的末尾添加指定的对象。
因此,当您使用for ( : )循环遍历列表时,它将从最古老的元素开始。
https://stackoverflow.com/questions/21931853
复制相似问题