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 }