0

何らかの理由で、私の==演算子は必要なときにtrueを返しません。まったく同じ文字列が2つ表示されていますが、それでもtrueとして登録されていません。何か案は?これはペア(string、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;
    }
4

3 に答える 3

3

文字列は==と比較しないでください。Javaでは、文字列はオブジェクトであり、==はそれらが同じオブジェクト参照であるかどうかをチェックします。同じ文字列が含まれているかどうかを確認する場合は、string.equals(otherString)を使用します。

于 2012-07-16T23:59:18.930 に答える
1

代わりにこれを行ってください:

if(compared.equals(current))
于 2012-07-16T23:59:31.100 に答える
0

String.equals()文字列を比較する方法を使用します。のようにif (string1.equals(string2))...

于 2012-07-16T23:59:52.337 に答える