2

JVM 运行对象数组是否比对象数组列表更快?

详细地说,假设我有两个变量

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 方法更好的优化搜索?

谢谢!

4

1 回答 1

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 将在相同的时间内运行这两者。

于 2013-05-15T03:42:29.023 回答