Error de Java Hashtable.contains ()

Estoy usando la última versión de Java para 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)

Descubrí que el Hashtable tiene un comportamiento no deseado. Aquí hay un ejemplo de código recortado:

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);
        }

    }
}

Aquí está la salida:

1500
true
OK
ERROR
{"myObject"="myObject"}

¿Alguna pista de cómo se comporta de esa manera? ¿Alguien puede señalar el problema? Por cierto, cuando estoy haciendo lo mismo usando HashSet (), no obtengo el efecto no deseado.

Respuesta 1

Como parte de un proyecto en el que estoy trabajando, necesito cifrar algunos datos con AES en código C # y descifrarlos en Java. Dado que la seguridad no es una prioridad (esto es solo una prueba de concepto) estamos de acuerdo con la clave ...

int logarithmCeiling (int x) {int power = 1; int cuenta = 0; while (potencia <x) {potencia = 2 * potencia; cuenta = cuenta +1; } cuenta de retorno; } El código anterior significa ...

¡Hola chicos! :) Estoy trabajando en un servicio que capta la cantidad de me gusta, acciones y demás de la API de Facebook. Pero hay un problema porque recibo una excepción de puntero nulo de fqlResponse.getChild () ...

¿Cuál es la mejor manera de tener un formato de código común (Java) cuando se usan Netbeans y Eclipse en un proyecto? He estado buscando una solución pero no puedo encontrar nada realmente adecuado. Yo vine ...