1
如果spaceship
運算符(compareTo)對列表失敗,sort
如何在列表的列表上工作?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()
在groovy中工作?
有人可以指點我如何比較Groovy中執行sort()
操作的數組嗎?
它是'v.sort {x,y-> y <=> x}'? – Rao
這怎麼樣 - https://stackoverflow.com/questions/2544258/how-can-i-compare-two-lists-in-groovy – Rao
那麼,不要使用'<=>'運營商?運營商無法猜測您想如何比較列表。你如何定義哪個列表更大?您必須定義應使用什麼標準或標準來定義訂單,然後您必須將其制定爲代碼。如果您不確定如何執行此操作,請添加您的排序要求,何時有一個列表變小,何時有一個列表變大以及何時有兩個列表與排序相同。 – Vampire