代码之家  ›  专栏  ›  技术社区  ›  sfgroups

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

  •  0
  • sfgroups  · 技术社区  · 4 年前

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

    如。

    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]
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   tim_yates    4 年前

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

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

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

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