首先看看collections实现
public static <T> void sort(List<T> list, Comparator<? super T> c) {
list.sort(c);
}
public static <T extends Comparable<? super T>> void sort(List<T> list) {
list.sort(null);
}
collections的实现可以看出,排序实现分为两种:是否实现了Comparator的接口
接下来看看list.sort的具体实现
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
list的实现是通过Arrays的排序实现的,然后再通过遍历器将数据数据插入到原有的List当中去
接下来看看Array是的源码
Arrays的排序实现分为4种情况:
aaarticlea/png;base64,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" alt="" />
对上图几点说明:
从上图可以看出排序有一个是否使用以前的排序方式,这个是1.8兼容1.6的排序方式;
不论是否实现了Comparator接口,后续的排序都是使用了折半插入排序,但是在不同的类里面实现的,这个主要区别是比较的对象是否实现了Comparable接口;
1.6的排序方式是归并排序,而1.7以后的是折半插入排序,至于为什么还没有弄明白,估计是归并排序的缺点才放弃的吧。虽然归并排序很稳定,但是需要的辅助空间太大;那为什么选择折半插入的原因可能是除了归并之外的其他稳定排序的几种方式里面快排不稳定,基数排序太特殊,但是堆排序个人感觉比折半还是好点,为什么没用就不清楚了。
Arrays的具体实现大家可以看一下源码,这里就不贴出来了。
- 使用jdk中提供的排序方式
package com.bjpowernode.t01; import java.util.Arrays; /** * 使用jdk中提供的排序方式 * */public class TestArray ...
- 禁用datagridview中的自动排序功能
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
- mapreduce任务中Shuffle和排序的过程
mapreduce任务中Shuffle和排序的过程 流程分析: Map端: 1.每个输入分片会让一个map任务来处理,默认情况下,以HDFS的一个块的大小(默认为64M)为一个分片,当然我们也可以设置 ...
- 在C#中对Datatable排序【DefaultView的Sort方法】
在C#中对Datatable排序,[DefaultView的Sort方法] 代码如下: DataTable dt = new DataTable(); dt.Columns.Add("ID& ...
- php中数组自定义排序
php中数组自定义排序方法有很多,现在只提usort();不会保留原有键名. unsort调用方法就是unsrot($arr,func); 注意: 如果func是写在当前类中的话,那么调用的方式是 u ...
- 关于Oracle数据库中SQL空值排序的问题
在Oracle中进行查询排序时,如果排序字段里面有空值的情况下,排序结果可能会达不到自己想要的结果. 如 select * from tableTest order by VISITS desc ...
- Java基础知识强化之IO流笔记52:IO流练习之 把一个文件中的字符串排序后再写入另一个文件案例
1. 把一个文件中的字符串排序后再写入另一个文件 已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl" 请编写程序读取数据内容,把数据排 ...
- Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制
新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronized JDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择.例如,java.util.concurrent.l ...
- DataSet 中的数据排序 及 DataRow装成DataTable
1.DataSet 中的数据排序 DataSet ds = new DataSet(); // 获取当前排口的数据 ds = _xiaobill.GetHistoryData(yinZiBianm, ...
随机推荐
- java继承-子类调用父类的方法中包含子类重写的方法
# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了... # 先看代码: public class Common { public static void main(String[] args ...
- 牛客小白月赛12 H 华华和月月种树 (离线dfs序+线段树)
链接:https://ac.nowcoder.com/acm/contest/392/H 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言2621 ...
- 【树形dp 思维题】HHHOJ#483. NOIP司马懿
要注意利用一些题目的特殊条件吧. 题目大意 有一颗$n$个点带点权$a_i$的树,$q$次询问树上是否存在长度为$l$的路径. $n,q,l\le 10^5,0 \le a_i \le 2$ 题目分析 ...
- union共同体
定义: union 共用体名{ 成员列表}: 与结构体不同的是,共用体的所有成员占用同一段内存,修改一个成员会影响其余成员.但是结构体的各个成员会占不同的内存. 结构体占用的内存大于等于所有成员占用的 ...
- 记录一个关于 Document.on绑定事件后,导致页面卡顿的情况
假设当前页面的js文件中有如下函数: function A(){ function B(); } function B(){ $(document).on("click",&quo ...
- 32位linux安装chrome浏览器
首先你需要一个安装包,可以在CSDN上搜索google-chrome-stable_current_i386.deb. 然后在终端输入 sudo apt-get install gdebi 然后找到安 ...
- 顺序表应用8:最大子段和之动态规划法(SDUT 3665)
Problem Description 给定n(1<=n<=100000)个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a ...
- Android_(控件)使用ListView显示Android系统中SD卡的文件列表
使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局line.xml(一个文件的单独存放) 运行截图: 程序结构: <?xml ver ...
- exgcd 解同余方程ax=b(%n)
ax=n(%b) -> ax+by=n 方程有解当且仅当 gcd(a,b) | n ( n是gcd(a,b)的倍数 ) exgcd解得 a*x0+b*y0=gcd(a,b) 记k=n/gc ...
- Linux Ubuntu 用c++11编译
加上: -std=c++ 例如: g++ test.