黑马程序员技术交流社区

标题: 利用Comparator接口进行对象的排序 [打印本页]

作者: 达达123    时间: 2016-11-9 20:40
标题: 利用Comparator接口进行对象的排序
在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。

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

一、实体类Step

?123456789101112131415161718192021222324252627282930313233343536373839404142 package com.ljq.entity;     /**  * 运号单流程  *   * @author Administrator  *   */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接口

?1234567891011121314151617181920212223242526272829 package com.ljq.entity;   import java.util.Comparator; import java.util.Date;   import com.ljq.util.UtilTool;   /**  * 对Step类进行排序  *   * @author Administrator  *  */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;   }   }
三、测试

?1234567891011121314151617181920212223242526 package junit;   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());       }     }     } }

作者: shy4458    时间: 2016-11-9 22:20
用手机看感觉真乱





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2