Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Long类型的ArrayList上使用indexOf返回-1,尽管列表中存在对象_Java_Android_Arraylist - Fatal编程技术网

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

Java 在Long类型的ArrayList上使用indexOf返回-1,尽管列表中存在对象,java,android,arraylist,Java,Android,Arraylist,我试图检索存储在ArrayList中的某个长值的索引。但现在发生的是: dex被赋值为-1,我理解这意味着该对象不存在于该arraylist中。但事实上,确实如此。我是这样知道的: 因此,应该为dex赋值为0 我在哪里搞砸了 编辑:nums也是Long类型的数组列表。它做什么nums.get(0)是一个java.lang.String,正如您在屏幕截图中指出的,而longList.get(0)是一个java.lang.Long 它们不是同一个对象,实际上nums.get(0).equals(

我试图检索存储在ArrayList中的某个长值的索引。但现在发生的是:

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

因此,应该为dex赋值为0

我在哪里搞砸了


编辑:
nums
也是Long类型的数组列表。

它做什么
nums.get(0)
是一个
java.lang.String
,正如您在屏幕截图中指出的,而
longList.get(0)
是一个
java.lang.Long


它们不是同一个对象,实际上
nums.get(0).equals(longList.get(0))==false
。您必须将
字符串
转换为
Long
(例如通过
Long.parseLong
),然后在
longList
中搜索结果值。它做什么
nums.get(0)
是一个
java.lang.String
,正如您在屏幕截图中指出的,而
longList.get(0)
是一个
java.lang.Long


它们不是同一个对象,实际上
nums.get(0).equals(longList.get(0))==false
。您必须将
字符串
转换为
Long
(例如通过
Long.parseLong
),然后在
longList
中搜索结果值,以确定哪种类型是
nums.get()
。如果它不返回长类型。您可以将其转换为长字体。但这并不是一个好的选择。您还可以使用Wrapperclass
Long
及其方法
Long.parseLong

来确定哪种类型是
nums.get()
。如果它不返回长类型。您可以将其转换为长字体。但这并不是一个好的选择。您还可以使用Wrapperclass
Long
及其方法
Long.parseLong
nums是String类型对象的ArrayList,而longList是Long类型对象的ArrayList。因此,语句
longList.indexOf(nums.get(i))
将比较一个字符串对象和一个它永远找不到的长对象


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

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


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

nums
也是一个Long类型的arraylist。然后,在代码中的某个地方,通过反射、显式强制转换或原始类型打破了类型安全性。否则,
nums.add(“1008”)
将引发编译错误。请注意,
nums
在运行时不能是
ArrayList
。Java有类型擦除,运行时
ArrayList
始终是
ArrayList
。泛型是一种防止您遇到这种情况的方法:在使用泛型容器时保持类型安全。好的,谢谢
nums=newarraylist(Arrays.asList(TextUtils.split(numstring,“”))numString
以字符串格式存储所有长值,通过这条特殊语句,我试图将字符串分成不同的长元素,并将其存储在
nums
——这是long类型。现在,我刚刚将
nums
更改为string类型,并使用Long.ParseLong。然后答案是raw类型。实际上,您从
Arrays.asList
返回的
ArrayList
创建了一个新的
ArrayList()
,因为
TextUtils.split
返回一个
String[]
nums
也是一个Long类型的ArrayList。然后,在代码中的某个地方,通过反射、显式转换或原始类型破坏了类型安全性。否则,
nums.add(“1008”)
将引发编译错误。请注意,
nums
在运行时不能是
ArrayList
。Java有类型擦除,运行时
ArrayList
始终是
ArrayList
。泛型是一种防止您遇到这种情况的方法:在使用泛型容器时保持类型安全。好的,谢谢
nums=newarraylist(Arrays.asList(TextUtils.split(numstring,“”))numString
以字符串格式存储所有长值,通过这条特殊语句,我试图将字符串分成不同的长元素,并将其存储在
nums
——这是long类型。现在,我刚刚将
nums
更改为string类型,并使用Long.ParseLong。然后答案是raw类型。实际上,您可以从
Arrays.asList
返回的
ArrayList
创建一个新的
ArrayList()
,因为
TextUtils.split
返回一个
字符串[]