2014-09-19 55 views
1

我需要搜索一個數組的值。我解析的字符串數組:在Android中,爲什麼ArrayList.contains(obj)總是返回false?

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

+3

列表包含數字串的事實讓我想知道'authorID'的類型是什麼。即如果authorID是一個整數,它將始終返回false。 – 2014-09-19 21:27:59

+0

確保authorID也是一個字符串 – 2014-09-19 21:28:52

+0

@teepeeSONY - Vince的評論讓我意識到我是authorID還是一個整數。這解決了這個問題。我有一個新的,但這是一個不相關的問題。 – dcp3450 2014-09-19 21:30:40

回答

1

你的代碼應該工作,所以我假設authorID不是一個字符串。

authorArray.contains(authorID);將始終返回false如果authorArray包含字符串,但authorID不是字符串。

1

的方法使用equals()方法下面來比較對象:

boolean contains(Object o) 

返回true如果此列表包含指定的元素。更正式地說,當且僅當該列表包含至少一個元素e(例如(o == null?e == null:o.equals(e))時才返回true。

的可能原因,爲什麼你false是你傳遞到無論是什麼不是String(也許你正在傳遞一個int?),或者是隻是沒有包含在列表內String

相關問題