Java - 比较 2 个浮点数(或双精度数)

Java - Comparing 2 floats (or doubles)

我有一个需要按宽度排序的 ArrayList,它存储为浮点数(.getWidth() returns 浮点数)

arrayPlaceholder.sort((m1,m2) -> font.getWidth(m2.getDisplayName()) - font.getWidth(m1.getDisplayName()));

我查看了文档并查看了我遇到的错误,很明显函数 .compare(),returns 只是一个 int。

有什么方法可以比较 2 个浮点数(或双精度数,因为我 可以 将浮点数转换为双精度数);在我的用法中?我看过其他帖子,但我不想硬编码这个过程。

简单:

(m1,m2) -> 
  Float.valueOf( // <- need object wrapper here (only)
    font.getWidth(m1.getDisplayName()))
  .compareTo(
    font.getWidth(m2.getDisplayName())
  )

Float#compareTo(java.lang.Float)

也可以:

(m1,m2) -> 
  Float.compare( //
    font.getWidth(m1.getDisplayName()),
    font.getWidth(m2.getDisplayName())
  )

对于降序: Switch m1 with m2 (xOr in parameters (m2, m1) xOR 在 (lambda) 正文中。