indexOf 返回 -1
indexOf returning -1
我正在搜索集合中的字符串并一直返回 -1
下面是我的代码:
Set<String> myTokens = sharedPreferences.getStringSet("myTokens", new HashSet<String>());
if(String.valueOf(myTokens).contains(auth.getUid())){
int i = Arrays.asList(myTokens).indexOf(auth.getUid());
Log.w(TAG, "Index position of token is: " + String.valueOf(i) + " where the token array is: " + myTokens + "auth.getUid() is: " + auth.getUid());
我的输出:
Index position of token is: -1 where the token array is: [0o75WmAAlTcWUzxgbcleBQSVQSr1, Ztg4GOqeucd6CqNAEokUe7eRHhY2, VatU5fy1U4cgTc3uBBiGX7G7kuT2] auth.getUid() is: Ztg4GOqeucd6CqNAEokUe7eRHhY2
不确定为什么我总是得到 -1,有什么想法吗?
人们建议 auth.getUid() 的值不在集合中。但是 "Ztg4GOqeucd6CqNAEokUe7eRHhY2" 出现在我放入的集合中在问题的底部
感谢阅读!
Arrays.asList(myTokens)
因为 myTokens
是一个 Set<String>
,这个表达式的类型是 List<Set<String>>
,而不是 List<String>
。
因为 List<Set<String>>
不能包含 String
元素,所以 indexOf(someString)
总是 return -1.
你应该使用
new ArrayList<>(myTokens)
取而代之的是创建集合的副本,其中元素在计算此表达式时的迭代顺序。
但是:myTokens
是(或者至少 可以 是)HashSet
,这是一个无序集合。因此,"index" 没有任何意义,因为如果您再次计算,无法保证索引会相同。如果集合包含该元素,则选择零是一个同样有效的策略。
我正在搜索集合中的字符串并一直返回 -1
下面是我的代码:
Set<String> myTokens = sharedPreferences.getStringSet("myTokens", new HashSet<String>());
if(String.valueOf(myTokens).contains(auth.getUid())){
int i = Arrays.asList(myTokens).indexOf(auth.getUid());
Log.w(TAG, "Index position of token is: " + String.valueOf(i) + " where the token array is: " + myTokens + "auth.getUid() is: " + auth.getUid());
我的输出:
Index position of token is: -1 where the token array is: [0o75WmAAlTcWUzxgbcleBQSVQSr1, Ztg4GOqeucd6CqNAEokUe7eRHhY2, VatU5fy1U4cgTc3uBBiGX7G7kuT2] auth.getUid() is: Ztg4GOqeucd6CqNAEokUe7eRHhY2
不确定为什么我总是得到 -1,有什么想法吗?
人们建议 auth.getUid() 的值不在集合中。但是 "Ztg4GOqeucd6CqNAEokUe7eRHhY2" 出现在我放入的集合中在问题的底部
感谢阅读!
Arrays.asList(myTokens)
因为 myTokens
是一个 Set<String>
,这个表达式的类型是 List<Set<String>>
,而不是 List<String>
。
因为 List<Set<String>>
不能包含 String
元素,所以 indexOf(someString)
总是 return -1.
你应该使用
new ArrayList<>(myTokens)
取而代之的是创建集合的副本,其中元素在计算此表达式时的迭代顺序。
但是:myTokens
是(或者至少 可以 是)HashSet
,这是一个无序集合。因此,"index" 没有任何意义,因为如果您再次计算,无法保证索引会相同。如果集合包含该元素,则选择零是一个同样有效的策略。