为什么以下Groovy代码段交替返回
[帐户:2222和2222,帐户:1111和1111]或
[帐户:1111和1111,帐户:2222和2222]
如果您在Groovy Console中多次运行它?
我以为sort语句导致列表的ALWAYS降序排序?
class Account {
long number
String code
String toString() {return "Account: $number and $code"}
static mapping = {
sort number:"desc"
}
}
List items = []
items << new Account(number:1111,code:'1111')
items << new Account(number:2222,code:'2222')
println items.sort()
提前致谢
多米尼克
最佳答案
您没有在Account实例之间定义顺序。映射伪指令仅适用于GORM映射的类(IOW:“域对象”),并且仅在从数据库AFAIK加载类的实例时使用。
但是,您将对象附加到一个普通列表,该列表不了解GORM属性。为了在这种情况下可靠地对Account实例列表进行排序,您将必须指定一个明确的顺序,例如:
class Account implements Comparable {
...
def int compareTo(rhs) {
long onum = rhs.number;
return (onum > number)? -1 : ((onum < number)? 1 : 0);
}
...
}
This article有关该主题的更多信息。至于为什么Groovy在多次调用list.sort时对列表进行不同的排序:好吧,我不知道...
关于grails - GRAILS中的替代默认排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209761/