(1)Java自带的排序方法
使用Arrays类的方法可对数组进行冒泡排序(java.util包下的类)
Arrays.sort(数组对象)方法对数组升序排列
使用Collections类可以定义排序的规则(比较器)
Collections.reverseOrder()方法:对规则进行反转
Arrays.sort(数组对象, Collections.reverseOrder())方法对数组降序排列
由于泛型的限制,使用此方法排序的数组对象不能为基本数据类型。
基本数据类型,要转换为对应的包装类。
(2)自定义排序
//新建一个比较器
Comparator<数组对象类型> comparator = new Comparator<数组对象类型>(){
@Override
//必须重载compare方法,说明比较的过程
public int compare(数组对象类型 o1, 数组对象类型 o2) {
说明:在冒泡排序中,每次需要比较两个对象的大小,o1和o2即为每一次排序比较时的对象,在此方法中通过return 1或return -1来声明,是否将两个对象互换位置。
if(o2排在o1前面的条件){
return 1; //表明o1和o2在比较时需要互换位置
}
else if(o1排在o2前面的条件){
return -1; //表明o1和o2在比较时不需要互换位置
}
return 0;
升序的规则:小的在前,大的在后。
if(o1的值比o2大){
return 1;
// o1比o2大,所以o2要排在o1的前面,需要换位置
}
else if(o1的值比o2小){
return -1;
// o1比o2小,所以o1要排在o2的前面,不需要换位置
字符串排序的规则:偷换概念
if(o1/o2.equal(“原来值”)){
o1/o2 = “替换值”
}
首先将字符串的排序规则变换成字符串排序的自然规则
例如扑克牌的排序
原来值 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | J | Q | K | A |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
替换值 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | B | C | D | E | F |
如上表所示,将10 J Q K A替换为B C D E F
然后直接return o1.compareTo (o2);即可
需要降序排列时,用下面的方法,用升序的逆序即为降序
Arrays.sort(数组对象, comparator);
//按照上面构造的解释器进行排序
Arrays.sort(数组对象,Collections.reverseOrder(comparator));
//按照上面构造的解释器进行逆向排序
(3)多国语言字符串排序
Arrays.sort(数组对象,Collator.getInstance(Locale.CHINA));
//此种方法调用了系统定义好的中文排序器,对带中文字符串进行排序,在Locale中还有很多其他国家的排序器。
注意:在中文排序中,系统无法对于多音字进行区分。