Wie Sie auf dem Bild unten sehen können, ist latLng
gleich latlng1
, aber indexOfValue()
gibt verschiedene Werte zurück.SparseArray indexOfValue (Object) gibt unterschiedliches Ergebnis für gleiche Variablen zurück
Warum ist das so?
Wie Sie auf dem Bild unten sehen können, ist latLng
gleich latlng1
, aber indexOfValue()
gibt verschiedene Werte zurück.SparseArray indexOfValue (Object) gibt unterschiedliches Ergebnis für gleiche Variablen zurück
Warum ist das so?
Ohne mehr von Ihrem Code zu sehen, meine Vermutung ist, dass ihre lat/lng Werte die gleichen sind, aber sie sind nicht das gleiche Objekt. Wenn Sie das LatLng-Objekt in Google APIs the equal method verwenden, werden nur die Werte für lat und long verglichen, nicht, dass es sich um dasselbe Objekt handelt.
Das Sparsearray enthält also nur eines der Objekte und gibt -1 zurück, weil das andere im Sparsearray nicht existiert.
Intern speichert SparseArray
Werte im Array Object
s. Im indexOfValue(E value)
Verfahren wird die value
mit den Array-Elementen verglichen 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;
}
Variablen latLng
und latlng1
beziehen sich auf verschiedene Objekte im Speicher, obwohl sie logisch gleich sind.