尽管列表中存在对象,但在Long类型的ArrayList上使用indexOf会返回-1

时间:2014-12-12 22:10:47

标签: java android arraylist

我试图检索存储在ArrayList中的某个Long值的索引。但是,这里发生了什么:

enter image description here

dex被赋值为-1 - 我理解这意味着该对象不存在于该arraylist中。但事实上,确实如此。以下是我的了解:

enter image description here

因此应该指定值dex为0.

我在哪里弄乱?

编辑:nums也是Long类型的arraylist。

3 个答案:

答案 0 :(得分:5)

它做什么?正如您的屏幕截图所示,nums.get(0)java.lang.String,而longList.get(0)java.lang.Long

它们不是同一个对象,实际上nums.get(0).equals(longList.get(0)) == false。您必须将String转换为Long(例如通过Long.parseLong),然后在longList

中搜索结果值

答案 1 :(得分:0)

哪种类型是nums.get()。如果它不返回长类型。你可以把它变成长型。但这不是一个很好的选择。您还可以使用Wrapperclass Long及其方法Long.parseLong

答案 2 :(得分:0)

nums是String类型的对象的ArrayList,而longList是Long类型的对象的ArrayList。因此,语句longList.indexOf(nums.get(i))将比较String对象和Long对象,它永远不会找到。

尝试将字符串转换为Long,例如int dex = longList.indexOf(Long.valueOf(nums.get(i)));