2014-09-19 3 views
1

배열 값을 검색해야합니다.Android에서 ArrayList.contains (obj)가 항상 false를 반환하는 이유는 무엇입니까?

boolean authorExists = authorArray.contains(authorID);

나는 배열 값을 기록하고있어 : I 사용자가 제공 한과 저자의 ID를 찾기 위해 시도

다음

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

: 나는 배열에 문자열을 구문 분석했습니다 전달되는 값 :

09-19 17:15:23.101: D/authorArray(16561): [3, 22] 
09-19 17:15:23.101: D/authorID(16561): 3 

ID에서 볼 수 있듯이 배열에 있습니다. 그러나 authorExistsfalse을 반환합니다.

+3

List에 숫자 문자열이 포함되어 있다는 사실로 인해 'authorID'유형이 무엇인지 궁금합니다. authorID가 정수인 경우 항상 false를 반환합니다. –

+0

authorID가 문자열인지 확인하십시오. –

+0

@teepeeSONY - 빈스의 의견은 authorID가 여전히 정수임을 인식하게했습니다. 이로 인해 문제가 해결되었습니다. 나는 새로운 것을 가지고 있지만 그것이 서로 관련이없는 다른 이슈이다. – dcp3450

답변

1

코드가 작동해야하므로 authorID은 문자열이 아닙니다.

authorArray.contains(authorID);authorArray에 문자열이 포함되어 있지만 authorID이 문자열이 아닌 경우 항상 false를 반환합니다.

1

contains() 방법은 개체를 비교하기 위해 아래 equals() 방법을 사용

boolean contains(Object o) 

반환 사실이리스트로 지정된 요소가있는 경우. 이리스트가 (o == null? e == null : o.equals (e))와 같은 적어도 1 개의 요소 e를 보관 유지하는 경우에만 true를 리턴합니다. 당신이 false을받을 이유

확률 적 이유는 당신이 중 하나를 contains()에 통과하는 것은 String (어쩌면 당신은 int을 전달하는?)되지 않는 것입니다하거나 목록 안에 포함되지 않은 String입니다

관련 문제