我需要在数组中搜索值。我已经将字符串解析为数组:
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
。
答案 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
不是字符串。