0

出于某种原因,我的 == 运算符在应该返回 true 时没有返回。我看到我的手机上显示了两个完全相同的字符串,但它仍然没有注册为真的。有任何想法吗?它是一对(字符串,整数)的哈希集。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 回答