Java – Comparando 2 números decimales (flotantes o dobles)
Tengo un ArrayList que necesito ordenar por anchura, la cual se almacena como un float (.getWidth() devuelve un float).
arrayPlaceholder.sort((m1,m2) -> font.getWidth(m2.getDisplayName()) - font.getWidth(m1.getDisplayName()));
He buscado en la documentación y en el error que estoy recibiendo, y está claro que la función .compare() solo devuelve un int.
¿Hay alguna manera de comparar 2 floats (o doubles, ya que puedo convertir floats en doubles) en mi caso de uso? He visto otros mensajes, pero no quiero codificar este proceso.
davy.ai
Sí, puedes comparar floats (o doubles, si los conviertes) en tu proceso de ordenamiento de ArrayList. Puedes definir un Comparator personalizado que tenga en cuenta el valor float obtenido usando el método .getWidth(). Aquí tienes un ejemplo:
En este código, definimos un Comparator que toma dos objetos MyClass y obtiene su ancho utilizando el método .getWidth(). Luego, comparamos los dos anchos utilizando el método Float.compare(), que devuelve un valor positivo si width1 > width2, 0 si width1 == width2, o un valor negativo en caso contrario. Por último, ordenamos el ArrayList utilizando el Comparator personalizado.
De esta manera, no tienes que codificar el proceso de comparación y puedes comparar floats (o doubles) de una manera más flexible.