containsKey関数を使用していくつか問題が発生しています。私はのcontainsKeyが私に異なる結果を与えることを期待しています場所を示すための小さなプログラムを書いた: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();
}
次のように識別子クラスのコンストラクタは、initは()似ているが、それはにあったものを削除します前の識別子。
Identifier(char c){
iden = new StringBuffer();
iden.append(c);
}
私はキーとして識別子を使用してハッシュマップに何かを置くが、私は別の名前ではなく、私は本当のを期待していた場合のcontainsKey関数がfalseを返した同じ内容の識別子を使用しようとします。 (出力はtrueを返します false
ありがとうございます!
あなたはwork変数を無視することができます。コードからその変数を削除するのを忘れました – Marnix