Groovy:如何按字符串长度顺序对 String:s 的 ArrayList 进行排序?

Posted

技术标签:

【中文标题】Groovy:如何按字符串长度顺序对 String:s 的 ArrayList 进行排序?【英文标题】:Groovy: How do I sort an ArrayList of String:s in length-of-string order? 【发布时间】:2010-10-18 06:09:56 【问题描述】:

如何在 Groovy 中按字符串长度顺序对 String 中的 ArrayList 进行排序?

代码:

def words = ['groovy', 'is', 'cool']
// your code goes here:
// code that sorts words in ascending length-of-word order
assert words == ['is', 'cool', 'groovy']

肯定有不止一种方法可以做到这一点 - 所以我会将答案授予提供最优雅解决方案的人。

【问题讨论】:

【参考方案1】:
words = words.sort  it.size() 

按降序排列

words = words.sort  -it.size() 

【讨论】:

很遗憾,即使在 2013 年,这也不是官方 groovy 文档的一部分(至少我从未找到过这个)。 @Panique:您希望找到什么?排序方法在 API 文档中,剩下的只是了解闭包的工作原理。 @MichaelBorgwardt 我刚刚在-it.size() 中搜索了几个小时、几天、几周、几年甚至几个世纪的小减号。以前从未见过。一个好的文档应该提供这样的信息,因为这是基本的东西。 谢谢!升序有效,但是,- 的降序不【参考方案2】:

如果在接受的解决方案中 -it.size() 不适用于降序,你可以试试这个: -1 * it.size()

【讨论】:

这些东西有什么不同?

以上是关于Groovy:如何按字符串长度顺序对 String:s 的 ArrayList 进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

6.2.2 Comparator接口

如何按字母顺序对字符串字符进行排序?

怎样让字符串按ASCII码排序

按字符串列的长度对数据帧进行排序[重复]

08-Groovy-数据类型-String介绍

当字符串为数字时,如何在考虑值的同时按字母顺序对字符串进行排序?