sorting - <=>在grails排序中是什么意思

标签 sorting grails

我知道这似乎是一个愚蠢的问题,但我无法弄清楚

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/

相关文章:

ios - 如何按总线编号 (buses.number) 对总线对象数组进行排序?

java - 在 Java 中,如何根据另一个列表对一个列表进行排序?

json - 如何在Grails中更新现有JSON对象的参数?

java - 有没有办法编译隐藏源代码?

grails - 无法通过Grails 3中的g:select检索数据

grails - 访问自动生成的字段并查询

C#归并排序性能

arrays - Scala:如何按元组的第二个元素对元组数组进行排序?

c++ - C++ map 问题

grails - grails,将数据从 Controller 传递到生成的_form.gsp View