Java 在Android中,为什么ArrayList.contains(obj)总是返回false?
我需要在数组中搜索一个值。我已将字符串解析为数组:Java 在Android中,为什么ArrayList.contains(obj)总是返回false?,java,android,arraylist,Java,Android,Arraylist,我需要在数组中搜索一个值。我已将字符串解析为数组: List authorary=Arrays.asList(authords.split(“,”) 然后,我试图找到用户提供的作者ID: boolean authorExists=authorary.contains(authorID) 我正在记录数组值和传递的值: 09-19 17:15:23.101: D/authorArray(16561): [3, 22] 09-19 17:15:23.101: D/authorID(16561): 3
List authorary=Arrays.asList(authords.split(“,”)代码>
然后,我试图找到用户提供的作者ID:
boolean authorExists=authorary.contains(authorID)代码>
我正在记录数组值和传递的值:
09-19 17:15:23.101: D/authorArray(16561): [3, 22]
09-19 17:15:23.101: D/authorID(16561): 3
如您所见,ID位于数组中。但是,authorExists
将返回false
contains()
方法使用下面的equals()
方法来比较对象:
boolean contains(Object o)
如果此列表包含指定的元素,则返回true。更正式地说,当且仅当此列表包含至少一个元素e时(o==null?e==null:o.equals(e))返回true
得到false
的可能原因是,传递到contains()
中的内容不是字符串(可能传递的是int
?),或者是列表中不包含的字符串,因此我假设authorID
不是字符串
authorary.contains(authorID)如果authorary
包含字符串,但authorID
不是字符串,则code>将始终返回false。列表包含数字字符串的事实使我想知道authorID
的类型是什么。i、 e.如果authorID是一个整数,它将始终返回false。请确保authorID也是一个整数String@teepeeSONY-文斯的评论让我意识到我的创作仍然是一个整数。这解决了问题。我有一个新的,但这是一个不同的问题,没有关系。