我遇到了大麻烦,创建了一个 hashMap 并使用相同的键插入了两个值
StringBuilder作为map的键。
现在,虽然尝试使用 StringBuilder 对象检索数据工作正常,但在其他情况下它无法返回任何值。我在下面给出的代码中列出了三种情况,
`
class MainClass {
public static void main(String[] args) {
MainClass m = new MainClass();
StringBuilder sb = new StringBuilder("sb");
StringBuilder sb1 = new StringBuilder("sb");
Map<StringBuilder, String> map = new HashMap<StringBuilder, String>();
map.put(sb, "a");
map.put(sb1, "b");
System.out.println("----Inside Main method---- mapValue"+map);
System.out.println("Expected value a, coming also => " + map.get(sb)); //a
System.out.println("Expected value b, coming also => " + map.get(sb1)); //b
System.out.println("Expected value a, not coming => " + map.get("sb")); // why null ?
m.receiveMap(map, sb, sb1);
}
public void receiveMap(Map<StringBuilder, String> map, StringBuilder refSb,StringBuilder refSb1) {
StringBuilder sb = new StringBuilder("sb");
StringBuilder sb1 = new StringBuilder("sb");
System.out.println("----Inside receiveMap method mapValue"+map);
System.out.println("Expected value a, not coming => " + map.get(sb)); // why null ?
System.out.println("Expected value b, not coming => " + map.get(sb1)); // why null ?
System.out.println("Expected value a, coming also => " + map.get(refSb)); // o/p - a
System.out.println("Expected value b, coming also => " + map.get(refSb1)); // o/p -b
}
}
`
在方法中receiveMap
System.out.println("Expected value a, not coming => " + map.get(sb)); // why null ?
因为你正在创造新的StringBuilder
某人在方法中具有不同的
hashcode 与 StringBuilder sb 进行比较PSVM.
StringBuilder 不会覆盖 equals 和 hashCode
StringBuilder sb = new StringBuilder("sb");
StringBuilder sb1 = new StringBuilder("sb");
Set s = new HashSet();
s.add(sb);
s.add(sb1);
System.out.println(s);
设置不允许重复但仍然打印[sb, sb]
因为 StringBuilder 不会覆盖 equals 和 hashcode 方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)