java比较有散列和无散列的字符串

k7fdbhmy  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(292)

我有一个包含哈希的字符串(它是由第三方程序自动生成的),还有一个不包含哈希的字符串,我需要与第一个字符串进行比较。
方法 .equals() 给假。我还能怎么比较呢?

pieyvz9o

pieyvz9o1#

if方法 == 以及 .equals() 给予 false ,然后 String 引用既不指向同一对象,也不指向堆中有意义的等价对象。除此之外, == 不应用于比较 String 字面量

a14dhokn

a14dhokn2#

字符串值使用 equals(String anotherString) . 如果该方法返回false,则字符串值根本不相等。
检查字符串的大小写、前导空格和尾随空格等。

euoag5mw

euoag5mw3#

如果我理解正确,有两个字符串要比较,一个是原始字符串(s1),第二个字符串包含原始字符串+第三方程序插入的哈希(s2)。如果是这样,内置的equals()方法将不会返回true。我将创建自己的equals()方法实现来检查这个问题。
这两种方法应该可以,但我更喜欢第二种。

private static boolean equals(String s1, String s2) {
    String s1Hash = String.valueOf(s1.hashCode());
    return (s2.contains(s1) && s2.contains(s1Hash));
}

private static boolean equals2(String s1, String s2) {
    String s1Hash = String.valueOf(s1.hashCode());
    String s2NoHash = s2.replace(s1Hash,"");
    return (s1.equals(s2NoHash));
}

希望这能回答你的问题。否则,用一个具体的例子来描述这个问题就好了。

相关问题