Я использую последнюю версию Java для x64.
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
Я обнаружил, что Hashtable имеет нежелательное поведение.Вот пример фрагмента кода:
public class Test {
public static void main(String[] args) {
Hashtable<MyObject, MyObject> table =
new Hashtable<MyObject, MyObject>();
MyObject myObj = new MyObject();
System.out.println(myObj.hashCode());
System.out.println(myObj.equals(myObj));
if (!table.contains(myObj)) {
System.out.println("OK");
table.put(myObj, myObj);
}
if (!table.contains(myObj)) {
System.out.println("ERROR");
System.out.println(table);
}
}
}
Вот результат:
1500
true
OK
ERROR
{"myObject"="myObject"}
Есть какие-нибудь подсказки, как это происходит?Может кто-то указать на проблему?Кстати, когда я делаю то же самое с помощью HashSet (), я не получаю нежелательный эффект.