我在使用函数 containsKey 时遇到了一些问题。我写了一个小程序来显示我期望 containsKey 给我一个不同的结果:
HashMap<IdentifierInterface, Set<NaturalNumberInterface>> hashMap;
HashMap<StringBuffer, Integer> works;
TryHashmap(){
hashMap = new HashMap<IdentifierInterface, Set<NaturalNumberInterface>>();
works = new HashMap<StringBuffer, Integer>();
}
private void start() {
Identifier iden = new Identifier('a');
NaturalNumber nn = new NaturalNumber('8');
Set<NaturalNumberInterface> set = new Set<NaturalNumberInterface>();
set.insert(nn);
hashMap.put(iden, set);
System.out.println(hashMap.containsKey(iden));
Identifier newIden = new Identifier('a');
System.out.println(hashMap.containsKey(newIden)); //TODO why is this not true?
iden.init('g');
System.out.println(hashMap.containsKey(iden));
}
public static void main(String[] argv) {
new TryHashmap().start();
}
Identifier 类的构造函数如下,init() 类似,但它会删除之前标识符中的任何内容。
Identifier(char c){
iden = new StringBuffer();
iden.append(c);
}
我使用标识符作为键将某些内容放入哈希图中,但是当我尝试使用具有不同名称但内容相同的标识符时,containsKey 函数在我期望为真的地方返回假。(输出打印真假真)
提前致谢!