Ich habe einige Probleme mit der Funktion containsKey. Ich schrieb ein kleines Programm zu zeigen, wo ich containsKey erwarten ein anderes Ergebnis geben Sie mir:Java util hashmap 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();
}
Der Konstruktor der Identifier Klasse wird wie folgt, die init() ähnlich ist, aber es wird alles zu entfernen, war in die Kennung vor.
Identifier(char c){
iden = new StringBuffer();
iden.append(c);
}
Ich habe etwas in die hashmap einen Identifier als Schlüssel verwendet, aber wenn ich versuche, eine Identifikation mit einem anderen Namen zu verwenden, aber mit dem gleichen Inhalt der containsKey Funktion gibt false zurück, wo ich ein wahres erwarten. (der Ausgang druckt true false wahr)
Vielen Dank im Voraus!
können Sie die Werke Variable ignorieren, vergessen zu i – Marnix