JVM是否比对象的 ArrayList 更快地运行对象的数组?
详细说明,我说有两个变量
Object theObject = someObject;
Object[] objArr;
ArrayList objArrList;
假设objArr和objArrList都具有相同的元素,将迭代objArray
的元素,直到我发现感兴趣的元素花费的时间与使用objArrList.indexOf(...)
即。是这样的:
int length = objArray.length;
for(int i=0; i<length; i++){
if(objArray[i].equals(someObject)){
idx = i; break;
}
}
与
基本相同 objArrList.indexOf(theObject);
或做ArrayLists(和一般的Lists)有一个优化的搜索,它比简单的-go-through-each-element-in-sequence方法好吗?
谢谢!
答案 0 :(得分:4)
ArrayList.indexOf(Object o)
的实现复制在
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
它与您在阵列上执行的操作完全相同。 (对null进行了一些不同的检查)。
因此JVM将在相同的时间内运行。