ArrayList.indexOf与对象数组的顺序搜索

时间:2013-05-15 03:34:09

标签: java arrays search arraylist

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方法好吗?

谢谢!

1 个答案:

答案 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将在相同的时间内运行。