Groovy 字符串数组排序使用浮点值在末尾截断零

Groovy String array sort using float value truncating zeros at the end

我有一个字符串浮点值数组,我想以相反的顺序对它进行排序。任何以零结尾的值都会被截断。

例如

25.200 附带 25.2

如何保留零值?

这是我的代码。

class Test {

    def static main(args){

        def tags = ["13.199", "14.200", "15.201", "25.220", "26.220", "3.200", "4.201", "5.201", "6.201", "7.202", "8.203", "9.205"]
        println tags.collect{it as Float}.sort{-it}
        println tags*.toFloat()?.sort()?.reverse()
        }
}

输出

[26.22, 25.22, 15.201, 14.2, 13.199, 9.205, 8.203, 7.202, 6.201, 5.201, 4.201, 3.2]
[26.22, 25.22, 15.201, 14.2, 13.199, 9.205, 8.203, 7.202, 6.201, 5.201, 4.201, 3.2]

要保留零,您需要保留字符串。但是你需要按浮点值排序(如你所见)

一种解决方案是为列表中的每个元素创建一个列表。第一个可以是浮点值,第二个是原始字符串

然后按第一个元素排序,收集第二个值

tags.collect { [ it.toFloat(), it ] }
    .sort { it[0] }
    *.getAt(1)​