groovy
宇宙船オペレーター
サーチ…
基本的な使用法
宇宙船オペレータ復帰-1
左オペレータは、小さいとき0
オペレータが等しいとき1
それ以外の場合:
assert 10 <=> 20 == -1
assert 10 <=> 10 == 0
assert 30 <=> 10 == 1
assert 'a' <=> 'b' == -1
assert 'a' <=> 'a'== 0
assert 'b' <=> 'a' == 1
Comparable.compareToメソッドと同等です。
assert 10.compareTo(20) == (10 <=> 20)
assert 'a'.compareTo('b') == ('a' <=> 'b')
カスタムソートのための宇宙船オペレータ
class User {
String name
int age
}
def users = [
new User(name: "Bob", age: 20),
new User(name: "Tom", age: 50),
new User(name: "Bill", age: 45)
]
// sort by age
users.sort { a, b -> a.age <=> b.age }
ComparatorとSortedSetでの使用法
Comparator cmp = [ compare:{ a, b -> a <=> b } ] as Comparator
def col = [ 'aa', 'aa', 'nn', '00' ]
SortedSet sorted = new TreeSet( cmp )
sorted.addAll col
assert '[00, aa, nn]' == sorted.toString()
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow