简要说明:
将需要排序的类实现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)); } }