我知道这似乎是一个愚蠢的问题,但我无法弄清楚
def Nodes = Node.findAllByParent(theNode).sort{ a, b -> a.label <=> b.label }
有吗Node类包含标签和其他属性。我想知道上一行的排序方式。 theNode就像一个有子节点的父节点。和它有什么不同
def Nodes = Node.findAllByParent(theNode,sort['label'])
最佳答案
a <=> b
是的简写
a.compareTo(b)
它本身等效于:
if (a > b) {
return 1
} else if (a < b) {
return -1
} else {
// a and b are equal
return 0
}
和...之间的不同
def Nodes = Node.findAllByParent(theNode).sort{ a, b -> a.label <=> b.label }
和
def Nodes = Node.findAllByParent(theNode,sort['label'])
是第一个在内存中进行排序,而在第二种情况下,查询按排序顺序返回节点。通常,应尽可能让数据库进行排序。
顺便说一句,我认为上面的第二个参数应该是
[sort: "label"]
而不是sort['label']
。
关于sorting - <=>在grails排序中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26279970/