如下面的图片所示,latLng等于latlng1,但是indexOfValue()返回不同的值。
这是为什么?

最佳答案

在内部,SparseArray将值保留在Objects数组中。在indexOfValue(E value)方法中,将value与数组元素by reference (not logical value)进行比较:

public int indexOfValue(E value) {
    for (int i = 0; i < mSize; i++)
        if (mValues[i] == value)
            return i;

    return -1;
}


变量latLnglatlng1引用内存中的不同对象,尽管它们在逻辑上是相等的。

09-11 18:10