通过在实体类中实现compartable中的compareTo方法
package com.lifeng.collection.sort.innerType;
import java.util.Date;
/**
* 新闻实体类
* @author 51093
* @param
*
*/
public class NewsItem implements Comparable{
private String title;//标题
private int hits;//点击量
private Date pubTime;//时间
public NewsItem() {
super();
}
public NewsItem(String title, int hits, Date pubTime) {
super();
this.title = title;
this.hits = hits;
this.pubTime = pubTime;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getHits() {
return hits;
}
public void setHits(int hits) {
this.hits = hits;
}
public Date getPubTime() {
return pubTime;
}
public void setPubTime(Date pubTime) {
this.pubTime = pubTime;
}
//先按时间降序,点击量升序,标题排序降序
@Override
public int compareTo(NewsItem o) {
int result=0;
result=-this.pubTime.compareTo(o.getPubTime());//降序
if(0==result) {
//时间相同则按照点击量排序
result=this.hits-o.getHits();
if(0==result) {
//相同则按照标题降序
result=-this.title.compareTo(o.getTitle());
}
}
return result;
}
@Override
public String toString() {
StringBuffer sb=new StringBuffer();
sb.append("标题是:"+this.title+",");
sb.append("时间是:"+this.pubTime+",");
sb.append("点击量是:"+this.hits+"\n");
return sb.toString();
}
}
package com.lifeng.collection.sort.innerType;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
public class NewsItemApp {
public static void main(String[] args) {
List list=new ArrayList<>();
list.add(new NewsItem("东方饭店深V",1000,new Date()));
list.add(new NewsItem("对方水电费",100,new Date()));
list.add(new NewsItem("的范德萨发放",89,new Date(System.currentTimeMillis()-1000*60*60)));
System.out.println("排序前:"+list);
//排序
list.sort(null);
System.out.println("排序之后:");
System.out.println("排序之后:"+list);
System.out.println("实体类对象:"+new NewsItem("东方饭店深V",1000,new Date()));
}
}
2、通过实现compartor中的自定义排序规则
package com.lifeng.collection.sort.innerType;
/**
* 商品实体类
* @author 51093
*
*/
public class Goods {
private String name;//商品名称
private int fav;//收藏量
private int price;//价格
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getFav() {
return fav;
}
public void setFav(int fav) {
this.fav = fav;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public Goods() {
super();
// TODO Auto-generated constructor stub
}
public Goods(String name, int fav, int price) {
super();
this.name = name;
this.fav = fav;
this.price = price;
}
@Override
public String toString() {
StringBuffer sb=new StringBuffer();
sb.append("商品名称:"+this.name+",");
sb.append("收藏量:"+this.fav+",");
sb.append("商品价格:"+this.price+"\n");
return sb.toString();
}
}
package com.lifeng.collection.sort.innerType;
import java.util.Comparator;
public class GoodsPriceComp implements Comparator{
@Override
public int compare(Goods o1, Goods o2) {
return -(o1.getPrice()-o2.getPrice()>0?1:(o1.getPrice()-o2.getPrice()==0?0:-1));
}
}
package com.lifeng.collection.sort.innerType;
import java.util.ArrayList;
import java.util.List;
public class GoodsApp {
public static void main(String[] args) {
List list=new ArrayList<>();
list.add(new Goods("佛挡杀佛",100,100));
list.add(new Goods("辅导费",103,10));
list.add(new Goods("辅导风",105,80));
list.add(new Goods("如果",106,900));
System.out.println("排序之前:"+list);
//排序
list.sort(new GoodsPriceComp());
System.out.println("排序之后:"+list);
}
}