有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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。 如果有人有任何想法,请分享,这将是一个很大的帮助我

enter image description here Link of Screenhot for code while debugging


共 (2) 个答案

  1. # 1 楼答案

    字符串h具有正确的哈希代码
    dataList读取的字符串s不应生成该哈希代码
    因此,请检查是否存在任何不一致之处
    打印每个字符的ascii码
    它应该给出:78 97 109 101

  2. # 2 楼答案

    我解决了我的问题,因为有一个不可打印的元素, 它的解决方法是:replaceAll(“\p{C}”,“”) “\p(C)”它检测不可打印元素的位置。。 然后使用replaceAll,它将用空字符串替换不可打印的元素