如下图所示,latLng
等于latlng1
,但indexOfValue()
会返回不同的值。
为什么?
答案 0 :(得分:1)
在内部,SparseArray
将值保存在Object
s的数组中。在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;
}
变量latLng
和latlng1
引用内存中的不同对象,尽管它们在逻辑上是相等的。
答案 1 :(得分:0)
如果没有看到更多的代码,我的猜测是他们的lat / lng值是相同的,但是,它们不是同一个对象。如果在Google APIs the equal method中使用LatLng对象只是比较纬度和长值,而不是它们是同一个对象。
因此sparsearray只包含其中一个对象并返回-1,因为sparsearray中不存在另一个。