版权声明:本文为博主原创文章,未经博主允许不得转载。
简单概述
在用JavaFX 做表格的时候(TableView),发现JavaFX内置了很多功能,最常见的就是排序。TableView 下包含了 TableColumn。每一列是一个TableColumn,该列会根据对象的类型(比如Integer, Double, Float, String 等等)进行排序。再排序的时候,默认调用对应类型的Comparator进行排序,当然你也可以创建自己的Comparator。这个功能很实用,那么问题来了,这和我的标题又有什么联系呢。
事情是这样的,我的表格中有一列是展示工资的。众所周知,工资没必要保留太多位数字,一般两位数就够了。但刚开始用TableColumn时,因为工资是自动计算出来的,如下图所示。
金额等于 0.07 x 3 = 0.21, 但显示的效果是0.2100000000… 很不美观
再者,我们看向日期列,因为需要格式化显示日期格式,所以不得不将Date 转化为String 打印输出。导致的结果就是默认调用String类的 Comparator,然后排序结果是这样的:
2019-5-1, 2019-5-11, 2019-5-12, … 2019-5-2, 2019-5-21, …
没有按照真正的日期排序