首先注意这里调用sort方法的是类,他是集合框架中的一员,其中实现了大量的工具方法,有时间可以自行查看:
下面是一个简单的测试类:
其中创建了一个ArrayList实例去测试sort()方法,执行结果如下:
开始进入正题,我们首先查看Collections中sort方法的源代码:
其中牵扯了许多泛型,T表示要排序的序列中的包含类型,这里出现了一个要求,类型 T 必须实现 Comparable 接口,,并且这个接口的类型是 T 或 T 的任一父类。这样声明后,T 的实例之间,T 的实例和它的父类的实例之间,可以相互比较大小。传入的参数为List类型。
这样,我们又开始查看中的sort方法,只是为了让排序能继续进行,对数据类型进行 一些处理:
再次进入Arrays类的sort,此处传入的参数是Object的:
在1.7之后,不再默认使用归并排序,被默认为false,也可以通过来更换
所以再再进入的sort(),别急,马上就完!
传入参数数组a,lo与hi为要执行排序序列的开始与结束位置,work是一个备用的空间,可以为其设置属性,在上面方法的调用中,我们并没有使用到work
其中使用的二分查找与合并等种种过程,根据一个个条件优化操作。精华的地方慢慢品吧。稍后添加!
文章来源:https://blog.csdn.net/No_Endless/article/details/60769618