java我有两个字符串,内容相同,但哈希代码不同,因此。equals方法正在重新运行false。请建议如何解决这个问题
for (String header : headers) {
for (int i = 0; i < dataList.get(0).size(); i++) {
String s = dataList.get(0).get(i);
String h = header;
int h1 = s.hashCode();
int h2 = h.hashCode();
int n = s.compareTo(h);
if (s.equals(h)) {
for (int k = 1; k < dataList.size(); k++) {
values.add(dataList.get(k).get(i));
}
此处for循环中的“headers”为=>;包含6个字符串对象的字符串[]头
我还尝试了intern方法,并将这些值存储在新的String对象中。每次equals方法都返回false。 如果有人有任何想法,请分享,这将是一个很大的帮助我
# 1 楼答案
字符串
h
具有正确的哈希代码从
dataList
读取的字符串s
不应生成该哈希代码因此,请检查是否存在任何不一致之处
打印每个字符的ascii码
它应该给出:
78 97 109 101
# 2 楼答案
我解决了我的问题,因为有一个不可打印的元素, 它的解决方法是:replaceAll(“\p{C}”,“”) “\p(C)”它检测不可打印元素的位置。。 然后使用replaceAll,它将用空字符串替换不可打印的元素