gpt4 book ai didi

android - SparseArrayCompat 的 indexOfValue(E) 总是返回 -1?

转载 作者:行者123 更新时间:2023-11-30 02:58:59 27 4
gpt4 key购买 nike

indexOfValue(E) 方法总是返回 -1,而我确定我的 E 对象存在于我的 SparseArray 对象中,为什么?我有:

static final SparseArrayCompat<Long> LOCATION_SHARING_TIME = new SparseArrayCompat<Long>();
static {
LOCATION_SHARING_TIME.put(0, LOCATION_SHARING_TIME_5s);
LOCATION_SHARING_TIME.put(1, LOCATION_SHARING_TIME_1m);
LOCATION_SHARING_TIME.put(2, LOCATION_SHARING_TIME_5m);
LOCATION_SHARING_TIME.put(3, LOCATION_SHARING_TIME_30m);
LOCATION_SHARING_TIME.put(4, LOCATION_SHARING_TIME_1h);
}

我不能使用 SparseLongArray,因为它支持 API 18+,而我的项目最低支持 API 9。

最佳答案

因为它使用==而不是equal来判断是否相等。查看方法的实现:

public int indexOfValue(E value) {  
if (mGarbage) {
gc();
}

for (int i = 0; i < mSize; i++)
if (mValues[i] == value)
return i;

return -1;
}

一个想法是扩展 SparseArray 并覆盖将 == 替换为 equal 的方法。

public int indexOfValue(E value) {  
if (mGarbage) {
gc();
}

for (int i = 0; i < mSize; i++)
if (mValues[i].equals(value))
return i;

return -1;
}

关于android - SparseArrayCompat 的 indexOfValue(E) 总是返回 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22835293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com