2012-07-16 4 views
0

어떤 이유로 인해 my == 연산자가 true 일 때 반환하지 않습니다. 내 전화에 표시된 것과 똑같은 문자열 두 개를 보았지만 여전히 사실로 등록되지 않았습니다. 어떤 아이디어? 쌍의 해시 세트 (문자열, int)입니다. getFirst는 쌍의 문자열을 반환합니다.집합의 쌍에서 문자열을 검색하려고 시도합니다.

private boolean contains(HashSet<Pair> mySet, String current) { 
     Iterator<Pair> temp = mySet.iterator(); 
     String compared; 
     Toast.makeText(MainActivity.this, " want " +current, 
       Toast.LENGTH_LONG).show(); 
     while (temp.hasNext()) { 
      compared = temp.next().getFirst(); 


       Toast.makeText(MainActivity.this, compared+" "+current, 
         Toast.LENGTH_SHORT).show(); 
       if (compared==current) 
        Toast.makeText(MainActivity.this, "found", Toast.LENGTH_SHORT).show(); 
     } 


     return false; 
    } 
+1

이 질문은 여러 번 지금은 답답합니다 심지어 – Woot4Moo

+0

그것은 슬픈 방식으로 _a bit_입니다. – dmon

답변

3

문자열을 ==와 비교하면 안됩니다. 자바에서는 문자열이 객체이고 ==는 객체 참조가 동일한 지 확인합니다. 동일한 문자 시퀀스가 ​​포함되어 있는지 확인하려면 string.equals (otherString)을 사용하십시오.

1

대신이 작업을 수행 :

if(compared.equals(current)) 
0

문자열을 비교하기위한 String.equals() 방법을 사용합니다. if (string1.equals(string2))...에서와 같이.

관련 문제