Java SparseArray indexOfValue(对象)为相等的变量返回不同的结果

Java SparseArray indexOfValue(对象)为相等的变量返回不同的结果,java,android,android-sparsearray,Java,Android,Android Sparsearray,正如您在图片中所看到的那样,latLng等于latlng1,但indexOfValue()返回不同的值 为什么会这样?在没有看到更多代码的情况下,我猜它们的lat/lng值是相同的,但是它们不是相同的对象。如果在中使用LatLng对象,则仅比较lat和long值,而不是它们是同一对象 因此sparsearray只包含一个对象并返回-1,因为另一个对象在sparsearray中不存在 在没有看到更多代码的情况下,我猜它们的lat/lng值是相同的,但是它们不是相同的对象。如果在中使用LatLng

正如您在图片中所看到的那样,
latLng
等于
latlng1
,但
indexOfValue()
返回不同的值


为什么会这样?

在没有看到更多代码的情况下,我猜它们的lat/lng值是相同的,但是它们不是相同的对象。如果在中使用LatLng对象,则仅比较lat和long值,而不是它们是同一对象


因此sparsearray只包含一个对象并返回-1,因为另一个对象在sparsearray中不存在

在没有看到更多代码的情况下,我猜它们的lat/lng值是相同的,但是它们不是相同的对象。如果在中使用LatLng对象,则仅比较lat和long值,而不是它们是同一对象


因此sparsearray只包含一个对象并返回-1,因为另一个对象在sparsearray中不存在

内部,
SparseArray
将值保存在数组中。在该方法中,
与数组元素进行比较:

public int indexOfValue(E值){
对于(int i=0;i

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

在内部,
SparseArray
将值保留在数组中。在该方法中,
与数组元素进行比较:

public int indexOfValue(E值){
对于(int i=0;i
变量
latLng
latlng1
引用内存中的不同对象,尽管它们在逻辑上是相等的

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

    return -1;
}