简要说明:
将需要排序的类实现Comparable接口,重写compareTo方法。
进而实现对象数组排序(升序降序)
----------------------------------------------------------------------------------------------------------------------------------
注:升序时,将重写的compareTo方法 return 结果对调
public int compareTo(impl_Comparable o) {
……………………
if (n > 0) {
// 当方法返回 1 时 :把参数对象往前放。(前o.date , 后this.date)
return 1;
} else {
// 当方法返回 -1 时:把参数对象往后放。(前this.date , 后o.date)
return -1;
}
}
----------------------------------------------------------------------------------------------------------------------------------
追加一种实现方式:
----------------------------------------------------------------------------------------------------------------------------------
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
//实现Comparable接口,使该类的对象可排序
public class Impl_Comparable {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 该类的属性Date
public Date date = new Date();
public Impl_Comparable(String str) {
try {
date = sdf.parse(str);
} catch (ParseException e) {
}
}
// 重载toString方法定义输出
public String toString() {
return sdf.format(date);
}
public static void main(String[] args) {
// 建立一个数组, 元素为3个TestComparable对象
Impl_Comparable[] c = new Impl_Comparable[] {
new Impl_Comparable("2012-07-12"),
new Impl_Comparable("2012-07-1"),
new Impl_Comparable("2012-12-12"),
new Impl_Comparable("2016-07-12"),
new Impl_Comparable("2016-08-12"),
new Impl_Comparable("2016-07-31"),
new Impl_Comparable("1989-05-01")
};
List<Impl_Comparable> list = Arrays.asList(c);
// 排序前
System.out.println(list);
// 排序
Collections.sort(Arrays.asList(c), new Comparator<Impl_Comparable>(){
public int compare(Impl_Comparable o1,Impl_Comparable o2) {
// 当o1.date大于o2.date时间,即n>0
long n = o1.date.getTime() - o2.date.getTime();
if (n > 0) {
// 当方法返回 -1 时:把参数对象往后放。(前o1.date , 后o2.date)
return -1;
} else {
// 当方法返回 1 时 :把参数对象往前放。(前o2.date , 后o1.date)
return 1;
}
}
});
// 排序后
System.out.println(list);
}
}
----------------------------------------------------------------------------------------------------------------------------------
代码说明:
实例为,按降序排列对象的date属性。
package Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
//实现Comparable接口,使该类的对象可排序
public class impl_Comparable implements Comparable<impl_Comparable> {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 该类的属性Date
public Date date = new Date();
public impl_Comparable(String str) {
try {
date = sdf.parse(str);
} catch (ParseException e) {
}
}
// 实现Comparable接口,按降序排列 date
public int compareTo(impl_Comparable o) {
// 当this.date大于o.date时间,即n>0
long n = date.getTime() - o.date.getTime();
if (n > 0) {
// 当方法返回 -1 时:把参数对象往后放。(前this.date , 后o.date)
return -1;
} else {
// 当方法返回 1 时 :把参数对象往前放。(前o.date , 后this.date)
return 1;
}
}
// 重载toString方法定义输出
public String toString() {
return sdf.format(date);
}
public static void main(String[] args) {
// 建立一个数组, 元素为3个TestComparable对象
impl_Comparable[] c = new impl_Comparable[] {
new impl_Comparable("2012-07-12"),
new impl_Comparable("2012-07-1"),
new impl_Comparable("2012-12-12"),
new impl_Comparable("2016-07-12"),
new impl_Comparable("2016-08-12"),
new impl_Comparable("2016-07-31"),
new impl_Comparable("1989-05-01")
};
// 排序前
System.out.println(Arrays.asList(c));
// 排序
Arrays.sort(c);
// 排序后
System.out.println(Arrays.asList(c));
}
}