如何对给定数字中的每个数字进行排序?

时间:2011-06-07 10:56:19

标签: groovy

我知道我可以在Groovy中使用sort()函数来对List进行排序。例如,我可以这样做:

def numbers = [1,4,3] as List
print numbers.sort() // outputs : [1,3,4]

现在我想知道Groovy中是否有一个函数,它可以执行以下操作:

def number = 143
// any method there to apply on number, so that i can get 134 as output!?
// that is i get sorted my number?

如果我错了,请纠正我!

2 个答案:

答案 0 :(得分:3)

这应该有效:

def number = 143
def sorted = "$number".collect { it as int }.sort().join() as int

这:

  1. 将数字转换为字符串"$number"
  2. collect每个char都是一个int(所以你得到一个int的列表)
  3. 在此阵列上调用sort()
  4. 调用join()将所有内容重新组合在一起作为字符串
  5. 然后调用as int将此String转换回int

  6. 顺便说一句,你不需要这样做:

    def numbers = [1,4,3] as List
    
    您的示例代码中的

    ... [1,4,3]已经是List,因此as List是多余的

答案 1 :(得分:1)

修改

这甚至更好(@tim有答案所以请不要改变,只需要处理我的Groovy印章; - )

降序版本将是:

def n = 143
println "$n".collect{it}.sort().reverse().join().toInteger() // or "as int" as you like

修改 这有点好:

def n = 143 as String
println n.collect{it}.sort().join().toInteger()

<强>原始 被黑了,但有效:

def n = 143.collect{it}.join(',').toList().sort().join()