在Android中,为什么ArrayList.contains(obj)总是返回false?

时间:2014-09-19 21:23:03

标签: java android arraylist

我需要在数组中搜索值。我已经将字符串解析为数组:

List<String> authorArray = Arrays.asList(authorIds.split(","));

然后我试图找到一个用户提供的作者ID:

boolean authorExists = authorArray.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

2 个答案:

答案 0 :(得分:1)

contains()方法使用下面的equals()方法来比较对象:

boolean contains(Object o)
  

如果此列表包含指定的元素,则返回true。更正式地说,当且仅当此列表包含至少一个元素e时才返回true(o == null?e == null:o.equals(e))。

您获得false的可能原因是,您传入contains()的内容不是String(也许您正在通过int?)或是只是未包含在列表中的String

答案 1 :(得分:1)

您的代码应该正常工作,因此我认为authorID不是字符串。

如果authorArray.contains(authorID);包含字符串,

authorArray将始终返回false,但authorID不是字符串。