Version used: androidx.collection:collection:1.1.0 Devices/Android versions reproduced on: Android emulator / Android 10 (API 29)
LongSparseArray<E>#containsValue method relies on LongSparseArray<E>#indexOfValue method.
LongSparseArray<E>#indexOfValue source code: mValues[i] == value instead of mValues[i].equals(value)
Example: With mValues[i] == value
LongSparseArray<Uri> test = new LongSparseArray<Uri>(); Uri uri = Uri.parse("https://www.google.com/"); Uri uri2 = Uri.parse("https://www.google.com/"); test.put(1L, uri); System.out.println(test.containsValue(uri)); System.out.println(test.containsValue(uri2));
Output is: I/System.out: true I/System.out: false
With the bug fix mValues[i].equals(value)
LongSparseArray<Uri> test = new LongSparseArray<Uri>(); Uri uri = Uri.parse("https://www.google.com/"); Uri uri2 = Uri.parse("https://www.google.com/"); test.put(1L, uri); System.out.println(test.containsValue(uri)); System.out.println(test.containsValue(uri2));
Description
Devices/Android versions reproduced on: Android emulator / Android 10 (API 29)
LongSparseArray<E>#containsValue method relies on LongSparseArray<E>#indexOfValue method.
LongSparseArray<E>#indexOfValue source code:
mValues[i] == value
instead of
mValues[i].equals(value)
Example:
With mValues[i] == value
LongSparseArray<Uri> test = new LongSparseArray<Uri>();
Uri uri = Uri.parse("
Uri uri2 = Uri.parse("
test.put(1L, uri);
System.out.println(test.containsValue(uri));
System.out.println(test.containsValue(uri2));
Output is:
I/System.out: true
I/System.out: false
With the bug fix mValues[i].equals(value)
LongSparseArray<Uri> test = new LongSparseArray<Uri>();
Uri uri = Uri.parse("
Uri uri2 = Uri.parse("
test.put(1L, uri);
System.out.println(test.containsValue(uri));
System.out.println(test.containsValue(uri2));
Output is:
I/System.out: true
I/System.out: true