了解Groovy中的类型算法



当我们使用排序时,为什么在数组中的第二个项目是第一个元素(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]

当您要求Groovy对项目进行排序时,它不会按顺序进行处理。Groovy使用封面下的集合排序。这可以以多种方式排序。遗产方式是合并排序。例如,如果您在Java 8中,它将执行Timsort https://en.wikipedia.org/wiki/timsort,这取决于您是否有旧版Merge Sort(arrays.legacymergesort.userrequested(打开。与基本的气泡排序相比,该算法不仅在列表中运行并比较每个项目。这就是为什么当您将印刷品放入比较器中时,似乎是随机的,这是比较的 - 这只是使排序更快的优化。

最新更新