当我们使用sort时,为什么数组中的第二项是第一个元素(a)。 看看这个例子,有什么我没有得到的吗?
def array = [4,2,7]
def listSorter = {a,b ->
println "a: " + a;
println "b: " + b;
a <=>b;
}
array = array.sort(listSorter);
println array;
打印出来:
a: 2
b: 4
a: 7
b: 2
a: 7
b: 4
[2, 4, 7]
答案 0 :(得分:0)
当您要求Groovy对您的商品进行分类时,它不符合要求。 Groovy在封面下使用集合排序。这可以以多种方式排序。传统方式是合并排序。例如,如果您使用的是Java 8,它将执行TimSort https://en.wikipedia.org/wiki/Timsort,具体取决于您是否启用了旧版合并排序(Arrays.LegacyMergeSort.userRequested)。与基本冒泡排序相比,算法不仅按顺序遍历列表并比较每个项目。这就是为什么当您将打印件放入比较器时,它似乎是随机的比较 - 这只是一种优化,使排序更快。