Comme vous pouvez le voir dans l'image ci-dessous latLng
est égal à latlng1
, mais indexOfValue()
renvoie des valeurs différentes.SparseArray indexOfValue (Object) renvoie un résultat différent pour des variables égales
Pourquoi?
Comme vous pouvez le voir dans l'image ci-dessous latLng
est égal à latlng1
, mais indexOfValue()
renvoie des valeurs différentes.SparseArray indexOfValue (Object) renvoie un résultat différent pour des variables égales
Pourquoi?
Sans voir plus de votre code, je suppose que leurs valeurs lat/lng sont les mêmes, cependant, ils ne sont pas le même objet. Si vous utilisez l'objet LatLng dans le Google APIs the equal method, il suffit de comparer les valeurs lat et long, et non pas le même objet.
Donc le spearearray ne contient que l'un des objets et renvoie -1 parce que l'autre n'existe pas dans le spearearray.
En interne, SparseArray
conserve les valeurs dans le tableau Object
s. Dans la méthode indexOfValue(E value)
la value
est comparée avec les éléments du tableau 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;
}
Variables latLng
et latlng1
font référence à des objets différents dans la mémoire, malgré elles sont égales logiquement.