我试图检索存储在ArrayList中的某个Long值的索引。但是,这里发生了什么:
dex被赋值为-1 - 我理解这意味着该对象不存在于该arraylist中。但事实上,确实如此。以下是我的了解:
因此应该指定值dex为0.
我在哪里弄乱?
编辑:nums
也是Long类型的arraylist。
答案 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)));