标签:java 排序 comparator
package com.hanchao.test; /** * 实体类Step * @author liweihan (liweihan@sohu-inc.com) * @version 1.0 (2016年1月13日 下午4:30:59) */ 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; } }
package com.hanchao.test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Comparator; import java.util.Date; /** * 对Step类排序的接口 * @author liweihan (liweihan@sohu-inc.com) * @version 1.0 (2016年1月13日 下午4:35:26) */ public class StepComparator implements Comparator<Step>{ private static final SimpleDateFormat yyyyMMdd = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); /** * 如果o1小于o2,返回一个负数。 * 如果o1大于o2,返回一个正数。 * 如果o1等于o2,则返回0 */ @Override public int compare(Step o1, Step o2) { try { Date acceptTime1 = yyyyMMdd.parse(o1.getAcceptTime()); Date acceptTime2 = yyyyMMdd.parse(o2.getAcceptTime()); //对字段进行升序,如果要降序可以采用before方法 if (acceptTime1.after(acceptTime2)) { return 1; } } catch (ParseException e) { e.printStackTrace(); } return -1; } }
package com.hanchao.test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; import com.sohu.star.pojo.Album; /** * @author liweihan (liweihan@sohu-inc.com) * @version 1.0 (2016年1月13日 下午4:47:49) */ public class StepComparatorTest { private static final SimpleDateFormat yyyyMMdd = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); public static void main(String[] args) { List<Step> list = new ArrayList<Step>(); Step step1 = new Step(); step1.setAcceptAddress("step1"); step1.setAcceptTime("2015-12-11 00:00:00"); Step step2 = new Step(); step2.setAcceptAddress("step2"); step2.setAcceptTime("2016-01-10 00:00:00"); Step step3 = new Step(); step3.setAcceptAddress("step3"); step3.setAcceptTime("2013-12-12 00:00:00"); list.add(step1); list.add(step2); list.add(step3); //对集合对象进行排序 /* StepComparator comparator = new StepComparator(); Collections.sort(list,comparator); for (Step step : list) { System.out.println(step.getAcceptAddress()); }*/ //结果(升序):step3 step1 step2 /** * 当然我们还可以简化掉StepComparator类 */ Collections.sort(list,new Comparator<Step>() { @Override public int compare(Step o1, Step o2) { try { Date acceptTime1 = yyyyMMdd.parse(o1.getAcceptTime()); Date acceptTime2 = yyyyMMdd.parse(o2.getAcceptTime()); //对字段进行降序,如果要升序可以采用after方法 if (acceptTime1.before(acceptTime2)) { return 1; } } catch (ParseException e) { e.printStackTrace(); } return -1; } }); for (Step step : list) { System.out.println(step.getAcceptAddress()); } //结果(降序):step2 step1 step3 /** * 我们对map集合做一下排序,每次添加后对map集合进行自动排序! * 如果o1小于o2,返回一个负数。 * 如果o1大于o2,返回一个正数。 * 如果o1等于o2,则返回0 */ Map<Integer,String> map = new HashMap<Integer, String>(); map = new TreeMap<Integer, String>(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { // return o2 - o1;//倒叙 // return o1 - o2;//正序 // return o1 - o2 > 0 ? -1 : 1;//倒序 return o1 - o2 > 0 ? 1 : -1;//正序 } }); map.put(5, "5"); map.put(3, "3"); map.put(2, "2"); map.put(1, "1"); map.put(4, "4"); System.out.println(map); //结果:{1=1, 2=2, 3=3, 4=4, 5=5} } }
本文出自 “我的JAVA世界” 博客,请务必保留此出处http://hanchaohan.blog.51cto.com/2996417/1734709
标签:java 排序 comparator
原文地址:http://hanchaohan.blog.51cto.com/2996417/1734709