es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El método “higher()” de TreeSet devuelve null cuando no debería hacerlo?

Actualmente estoy trabajando en un proyecto para el cual utilizo un TreeSet. El conjunto está ordenado basado en un valor. En algún momento, quiero obtener el vecino derecho de un valor de “clave” determinado, el cual existe y se muestra en la depuración con los valores correctos, pero el método higher() aún devuelve null y no tengo idea de por qué.

Aquí está el código de prueba y la salida de depuración.

// Encuentra el predecesor y el sucesor
SemiCircle lower = status.lower(circle.getLeft());
SemiCircle higher = status.higher(circle.getRight());

El status es el TreeSet en este caso. Esto es lo que parece al buscar el valor más bajo y el más alto:

SemiCircle{parent=0.3 0.8 0.2, isOnLeft=true, key=0.2826} // Esto es circle.getLeft()
SemiCircle{parent=0.3 0.8 0.2, isOnLeft=false, key=0.3173} // Esto es circle.getRight()
SemiCircle{parent=0.6 0.5 0.3, isOnLeft=true, key=0.3174}
SemiCircle{parent=0.6 0.5 0.3, isOnLeft=false, key=0.8825}

Como puedes ver, lower debería devolver null y higher debería devolver el tercer semicírculo en el conjunto, sin embargo, simplemente devuelve null. ¿Hay algo que me esté perdiendo?

Editar: Un SemiCircle es la mitad de un círculo. Conserva el círculo original, ya sea la mitad izquierda o la derecha y la “clave” como se explicó anteriormente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que TreeSet probablemente no está ordenado correctamente según el valor del campo “key”. Esto puede ocurrir si el campo “key” no implementa la interfaz Comparable, o si el método compareTo() no está implementado correctamente.

    Para utilizar un TreeSet, los objetos que se agregan a él deben implementar la interfaz Comparable, o se debe proporcionar un objeto Comparator al crear el TreeSet. El método compareTo() debe implementarse correctamente para asegurar que TreeSet esté ordenado según el campo deseado.

    En este caso, es posible que el campo “key” no esté implementado correctamente o no sea comparable, lo cual podría explicar por qué el método higher() devuelve null. Se recomienda revisar la implementación del método compareTo() o intentar utilizar un objeto Comparator para asegurarse de que TreeSet esté ordenado correctamente.

    Otra posibilidad es que haya algún problema con los datos que se agregan al TreeSet. Podría ser que los datos no se estén agregando en el orden correcto, o que haya duplicados en los datos. Sería útil revisar los datos que se agregan al TreeSet y asegurarse de que sean correctos.

    En general, es difícil determinar la causa exacta del problema sin más información sobre la implementación de la clase SemiCircle y los datos que se están utilizando.

Comments are closed.