package com.java.demo.Comparator;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* 运号单流程
*
* @author Administrator
*/
public class TestComparator {
/**
* 测试main方法
* @param args
*/
public static void main(String[] args) {
List<Step> steps = new ArrayList<Step>();
Step s1 = new Step("2012-07-10", "北京1");
Step s2 = new Step("2012-07-11", "北京2");
Step s3 = new Step("2012-07-12", "北京3");
Step s4 = new Step("2012-07-09", "北京4");
Step s5 = new Step("2012-07-11", "北京22");
steps.add(s1);
steps.add(s2);
steps.add(s3);
steps.add(s4);
steps.add(s5);
sort(steps);
}
private static void sort(List<Step> steps) {
//对集合对象进行排序
MyStepComparator comparator = new MyStepComparator();
Collections.sort(steps, comparator);
if(steps != null && steps.size() > 0) {
for(Step step:steps) {
System.out.print(step.getAcceptTime() + ":");
System.out.println(step.getAcceptAddress());
}
}
}
/**
* 对Step类进行排序比较的工具类
*
* @author Administrator
*
*/
static class MyStepComparator implements Comparator<Step>{
/**
* 如果o1小于o2,返回一个负数;如果o1大于o2,返回一个正数;如果他们相等,则返回0;
*/
@Override
public int compare(Step o1, Step o2) {
Date acceptTime1 = Date.valueOf(o1.getAcceptTime());
Date acceptTime2 = Date.valueOf(o2.getAcceptTime());
//对日期字段进行升序,如果欲降序可采用before方法
if(acceptTime1.after(acceptTime2)) {
return 1;
} else if(acceptTime1.before(acceptTime2)) {
return -1;
} else {
return 0;
}
}
}
/**
* 需要比较的对象
* @author maodejun
*
*/
static class Step{
/** 处理时间 */
private String acceptTime = "";
/** 快件所在地点 */
private String acceptAddress = "";
public Step() {
super();
}
public Step(String acceptTime, String acceptAddress) {
super();
this.acceptTime = acceptTime;
this.acceptAddress = acceptAddress;
}
public String getAcceptTime() {
return acceptTime;
}
public void setAcceptTime(String acceptTime) {
this.acceptTime = acceptTime;
}
public String getAcceptAddress() {
return acceptAddress;
}
public void setAcceptAddress(String acceptAddress) {
this.acceptAddress = acceptAddress;
}
}
}