主场迎战据了解,如果我想找到一个对象是否是一个ArrayList我既可以使用contains()方法:的Java ArrayList包含了循环
if(arraylist.contains(obj)) { // do things }
或者我可以用一个用于环(条件是我已重载equals()方法):
for(Object o : arraylist) {
if(obj.equals(o)) {
// do things
}
}
正如在其他职位被称为,含有()实际上使内部的用于循环和equals()方法。因此,我的问题是:在数组列表较大时期望contains()花费更多时间是否合乎逻辑?
我在问这是因为在我的代码中,我使用contains()以避免“for循环”,因此保持运行时间低且恒定,但我注意到代码运行速度明显慢于arraylist大小变得更大。
“我注意到代码运行作为该ArrayList尺寸变得更大显著慢。”,这是很有意义的,因为更大的阵列是,则更多的元素存在通过搜索。 – Vallentin
@Vallentin这也是我的想法。不过,还没有一个性能增益(或至少不显著之一)通过使用包含(),而不是一个手动写的for循环,对不对? – Kotsos
肯定会随着数组列表大小的增加而变慢。 '的使用包含()'将在单行和会比你的for循环 –