java比较器Comparator


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;
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值