spaceship
演算子(compareTo)がリストに失敗した場合、リストのリストにはどのように作用するのですか?groovyリストのリスト:宇宙船オペレータが失敗したときのソートの仕組みは?
それだけequals
ないことを注意するが、compareTo
(低い、より大きい、または等しい)
def v1=[1, 2, 0]
def v2=[1, 3, 0]
def v=[v2,v1]
println v
//prints> [[1, 3, 0], [1, 2, 0]]
v=v.sort()
assert v[0]==v1
println v
//prints> [[1, 2, 0], [1, 3, 0]]
c=c.sort{x,y-> y<=>x}
//throws Cannot compare java.util.ArrayList with value '[1, 3]' and java.util.ArrayList with value '[1, 2, 3]'
List<List>.sort()
作品上記のコードによります。 Iterable.sort() documentationによると
:
は、コレクションをソートします。 コレクションのアイテムは、と同等であると仮定し、自然順序付けを使用して結果の順序を決定します。
質問なぜ、どのようにグルーヴィーでList<List>.sort()
作品?
誰かが配列の比較はsort()
操作のためにGroovyで実装する方法私を指すことができますか?
''それv.sort {X、Y> Y <=> X}はありますか? – Rao
どのようにこのことについて - https://stackoverflow.com/questions/2544258/how-can-i-compare-two-lists-in-groovy – Rao
まあ、 '' <=>演算子を使用していませんか?オペレータは、リストを比較する方法を推測することはできません。どんなリストが大きいかをどのように定義しますか?順序を定義するためにどの基準を使用すべきかを定義し、それをコードとして定式化する必要があります。あなたがそれを行う方法がわからない場合は、ソート要件を追加します.1つのリストが小さい場合、1つのリストが大きい場合、ソートに関して2つのリストが同じ場合はいつ追加しますか。 – Vampire