https://cloud.tencent.com/developer/article/1410680
一、基本数据类型:
二、引用类型:
2.1内置引用类型(String,Integer…),内部已经指定规则,直接使用即可。----实现Comparable接口
1. 整数、 Integer…:根据基本数据类型大小
2. Character(字符):根据Unicode编码顺序
3. String(字符串):
1)如果其中一个是另一个起始开始的子串,返回长度之差,
2)否则返回第一个不相等的Unicode之差。
4. 日期:根据日期的长整型数比较。
2.2自定义引用类型,需要按照业务规则排序。
内置排序方式
现成的库函数Arrays.sort(数组名) ,默认升序
其他数组排序方式参考https://www.cnblogs.com/gqdw/p/14085176.html
降序:
参考http://c.biancheng.net/view/925.html
1)利用 Collections.reverseOrder() 方法
Arrays.sort(a, Collections.reverseOrder());
2)实现 Comparator 接口的复写 compare() 方法
public class Test {
public static void main(String[] args) {
/*
* 注意,要想改变默认的排列顺序,不能使用基本类型(int,double,char)而要使用它们对应的类
*/
Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };
// 定义一个自定义类MyComparator的对象
Comparator cmp = new MyComparator();
Arrays.sort(a, cmp);
for (int arr : a) {
System.out.print(arr + " ");
}
}
}
// 实现Comparator接口
class MyComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
/***加粗样式**
* 如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值, 这样颠倒一下,就可以实现降序排序了,反之即可自定义升序排序了
*/
return o2 - o1;
}
}
注意:上述两种方法要求数据类型为包装类(见文末)
当引用类型的内置排序方式无法满足需求时可以自己实现满足既定要求的排序,有两种方式:
第一种: 自定义业务排序类:新建一个业务排序类实现java.util.Comparator 下的compare 接口,然后使用java提供的Collections调用排序方法,并将此业务排序类作为参数传递给Collections的sort方法
Collections.sort(list,new GoodsPriceCompare());
第二种:实体类实现 java.lang**.Comparable下的compareTo接口,在接口中实现满足需求的,然后使用java提供的Collections调用排序方法sort,会自动调用**此时实现的接口方法。
Collections.sort(news);
包装类型
https://www.liaoxuefeng.com/wiki/1252599548343744/1260473794166400