• Comparator 比较器示例


    在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。

    接下来我们模拟下在集合对象中对日期属性进行排序

    一、实体类Step

    /**
     * 运号单流程
     */
    public 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;
        }
    }
    

    二、实现Comparator接口

    import java.util.Comparator;
    import java.util.Date;
    import com.ljq.util.UtilTool;
    
    /**
     * 对Step类进行排序
     */
    public class StepComparator implements Comparator<Step>{
        /**
         * 如果o1小于o2,返回一个负数;如果o1大于o2,返回一个正数;如果他们相等,则返回0;
         */
        @Override
        public int compare(Step o1, Step o2) {
            Date acceptTime1=UtilTool.strToDate(o1.getAcceptTime(), null);
            Date acceptTime2=UtilTool.strToDate(o2.getAcceptTime(), null);
            //对日期字段进行升序,如果欲降序可采用before方法
            if(acceptTime1.after(acceptTime2)) return 1;
            return -1;
        }
    }
    

    三、测试

    import java.util.Collection;
    import java.util.Collections;
    import java.util.List;
    import org.junit.Test;
    
    public class StepComparatorTest {
        @Test
        public void sort() throws Exception{
            List<Step> steps=new ArrayList<Step>;
            //对集合对象进行排序
             StepComparator comparator=new StepComparator();
            Collections.sort(steps, comparator);
            if(steps!=null&&steps.size()>0){
                for(Step step:steps){
                   System.out.println(step.getAcceptAddress());
                   System.out.println(step.getAcceptTime());
                }
            }
        }
    }
    
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    hdu-5761 Rower Bo(数学)
    hdu-5754 Life Winner Bo(博弈)
    hdu-5753 Permutation Bo(概率期望)
    hdu-5752 Sqrt Bo(水题)
    hdu-5749 Colmerauer(单调栈)
    svn使用教程
    less
    springmvc 孔浩 hibernate code
    springmvc 开涛 生产者/消费者
    springmvc 开涛 拦截器
  • 原文地址:https://www.cnblogs.com/hhddd-1024/p/15305032.html
Copyright © 2020-2023  润新知