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)
我有一个字符串浮点值数组,我想以相反的顺序对它进行排序。任何以零结尾的值都会被截断。
例如
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)