latLng
の画像は、latlng1
と等しくなりますが、indexOfValue()
は異なる値を返します。SparseArray indexOfValue(Object)は等価変数で異なる結果を返します
それはなぜですか?
latLng
の画像は、latlng1
と等しくなりますが、indexOfValue()
は異なる値を返します。SparseArray indexOfValue(Object)は等価変数で異なる結果を返します
それはなぜですか?
あなたのコードをもっと見ることなく、私の推測では、それらのlat/lngの値は同じですが、同じオブジェクトではありません。 Google APIs the equal methodのLatLngオブジェクトを使用すると、同じオブジェクトではなく、緯度と経度の値が比較されます。
したがって、sparsearrayには1つのオブジェクトしか含まれておらず、もう1つはsparsearrayに存在しないため-1を返します。
内部的には、SparseArray
は値をObject
sの配列で保持します。
public int indexOfValue(E value) {
for (int i = 0; i < mSize; i++)
if (mValues[i] == value)
return i;
return -1;
}
変数latLng
、それらが論理的に等しくしているにもかかわらずlatlng1
は、メモリ内の別のオブジェクトを参照:indexOfValue(E value)
方法でvalue
は、配列要素by reference (not logical value)と比較されます。