Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 什么是<=&燃气轮机;平均粒数排序_Sorting_Grails - Fatal编程技术网

Sorting 什么是<=&燃气轮机;平均粒数排序

Sorting 什么是<=&燃气轮机;平均粒数排序,sorting,grails,Sorting,Grails,我知道这似乎是一个愚蠢的问题,但我不知道是什么 def Nodes = Node.findAllByParent(theNode).sort{ a, b -> a.label <=> b.label } 其本身相当于: 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 }
其本身相当于:

if (a > b) {
  return 1

} else if (a < b) {
  return -1

} else {
  // a and b are equal
  return 0
}
第一种方法是在内存中进行排序,而第二种方法是通过查询按排序顺序返回节点。通常,您应该让数据库尽可能地进行排序

顺便说一下,我认为上面的第二个参数应该是
[sort:“label”]
,而不是
sort['label']

其本身相当于:

if (a > b) {
  return 1

} else if (a < b) {
  return -1

} else {
  // a and b are equal
  return 0
}
第一种方法是在内存中进行排序,而第二种方法是通过查询按排序顺序返回节点。通常,您应该让数据库尽可能地进行排序


顺便说一句,我认为上面的第二个参数应该是
[sort:“label”]
,而不是
sort['label']

第一个
sort
在集合上作为Groovy排序,第二个是使用数据源的排序功能(例如数据库ORDER By)

被称为宇宙飞船操作员。运算符是引用可比较接口的compareTo方法的另一种方式。这意味着我们可以在自己的类中实现compareTo方法,这将允许我们在代码中使用操作符。当然,所有已经实现了compareTo方法的类都可以与spaceship操作符一起使用。该运算符有助于实现良好的可读性排序方法

例如:

class Person implements Comparable {
    String username
    String email

    int compareTo(other) {
        this.username <=> other.username
    }
}

assert -1 == ('a' <=> 'b')
assert 0 == (42 <=> 42)
assert -1 == (new Person([username:'foo', email: 'test@email.com']) <=> new Person([username:'zebra', email:'tester@email.com']))
assert [1, 2, 3, 4] == [4, 2, 1, 3].sort{ a, b -> a <=> b }
class-Person实现可比性{
字符串用户名
字符串电子邮件
国际比较(其他){
this.username other.username
}
}
断言-1==('a''b')
断言0==(42)
断言-1==(新用户([用户名:'foo',电子邮件:'test@email.com“])新人([用户名:'zebra',电子邮件:'tester@email.com']))
断言[1,2,3,4]=[4,2,1,3]。排序{a,b->ab}

第一个
排序
在集合上作为Groovy排序完成,第二个排序使用数据源的排序功能(例如数据库排序方式)

被称为宇宙飞船操作员。运算符是引用可比较接口的compareTo方法的另一种方式。这意味着我们可以在自己的类中实现compareTo方法,这将允许我们在代码中使用操作符。当然,所有已经实现了compareTo方法的类都可以与spaceship操作符一起使用。该运算符有助于实现良好的可读性排序方法

例如:

class Person implements Comparable {
    String username
    String email

    int compareTo(other) {
        this.username <=> other.username
    }
}

assert -1 == ('a' <=> 'b')
assert 0 == (42 <=> 42)
assert -1 == (new Person([username:'foo', email: 'test@email.com']) <=> new Person([username:'zebra', email:'tester@email.com']))
assert [1, 2, 3, 4] == [4, 2, 1, 3].sort{ a, b -> a <=> b }
class-Person实现可比性{
字符串用户名
字符串电子邮件
国际比较(其他){
this.username other.username
}
}
断言-1==('a''b')
断言0==(42)
断言-1==(新用户([用户名:'foo',电子邮件:'test@email.com“])新人([用户名:'zebra',电子邮件:'tester@email.com']))
断言[1,2,3,4]=[4,2,1,3]。排序{a,b->ab}

compatito方法是否区分大写字母和小写字母?我的意思是,在结果中,我发现小写总是在大写之后,即它们没有排序(大写单词在它们之间排序,因为小写在它们之间排序,但不在一起)
String。compareTo
区分大小写,但是还有另一种方法是不区分大小写的compateTo方法区分大写字母和小写字母?我的意思是,在结果中,我发现小写总是在大写之后,也就是说,它们没有被排序(大写单词在它们之间排序,因为小写字母在它们之间排序,但不在一起)
String。compareTo
区分大小写,但还有另一种方法
compareTognoreCase
不区分大小写
def Nodes = Node.findAllByParent(theNode).sort{ a, b -> a.label <=> b.label }
def Nodes = Node.findAllByParent(theNode,sort['label'])
class Person implements Comparable {
    String username
    String email

    int compareTo(other) {
        this.username <=> other.username
    }
}

assert -1 == ('a' <=> 'b')
assert 0 == (42 <=> 42)
assert -1 == (new Person([username:'foo', email: 'test@email.com']) <=> new Person([username:'zebra', email:'tester@email.com']))
assert [1, 2, 3, 4] == [4, 2, 1, 3].sort{ a, b -> a <=> b }