1.Main package s0223多条件排序; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; public class Main { public static void main(String[] args) { List news=new ArrayList(); news.add(new NewsItem("中国登上钓鱼岛",100,new Date(System.currentTimeMillis() ) ) ); news.add(new NewsItem("中国GDP总量",40,new Date(System.currentTimeMillis() ) ) ); news.add(new NewsItem("美国总统与xx会晤",60, new Date(System.currentTimeMillis() ) ) ); System.out.println("排序前:"+news); Collections.sort(news); //因为news中的元素都是Comparable的实现类的实例,所以默认使用指定的Comparator //如果使用comparator的实现类,那么要指定comparator System.out.println("排序后:"+news); } } 2.NewsItem类,在这个类中定义了排序优先级和排序顺序 package s0223多条件排序; import java.text.SimpleDateFormat; //新闻按时间降序,点击量升序,标题降序 import java.util.Date; public class NewsItem implements java.lang.Comparable{ private String title; private int hit; private Date pubTime; public NewsItem(){} public NewsItem(String title, int hit, Date pubTime) { super(); this.title = title; this.hit = hit; this.pubTime = pubTime; } //新闻按时间降序,点击量升序,标题降序,3个if嵌套,规定了排序的优先级 public int compareTo(NewsItem o) { int result=0; result=-this.pubTime.compareTo(o.pubTime);//加了- 变成降序 if(result==0) { result=this.hit-o.hit; if(result==0) { result=this.title.compareTo(o.title); } } return result; } public String toString() { StringBuilder sb=new StringBuilder(); sb.append(" 标题:").append(this.title); sb.append(" 时间:").append(new SimpleDateFormat("yyyy-MM-dd").format(this.pubTime)); sb.append(" 点击量:").append(this.hit).append("\n"); String str=sb.toString(); return str; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getHit() { return hit; } public void setHit(int hit) { this.hit = hit; } public Date getPubTime() { return pubTime; } public void setPubTime(Date pubTime) { this.pubTime = pubTime; } }