java 实现Comparable接口排序,升序、降序、倒叙

这篇文章主要介绍了java 实现Comparable接口排序,升序、降序、倒叙,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

本人由于项目开发中需要对查询结果list进行排序,这里根据的是每一个对象中的创建时间降序排序。本人讲解不深,只实现目的,如需理解原理还需查阅更深的资料。

1.实现的效果

2.创建排序的对象

 package com.practice.test.comparable; import java.util.Date; /** * 描述:要比较的对象 * * @author cui * @create 2018-12-18 14:07 */ public class MySortBean implements Comparable { private String name; private int age; private Date createTime; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } //  @Override //  public int compareTo(MySortBean o) { //    if (this.age>o.age){ //      return -1; //    }else if (this.age==o.age){ //      return 0; //    } //    return 1; //  } @Override public int compareTo(MySortBean o) { if (this.createTime.compareTo(o.getCreateTime())>0){ return -1; }else if (this.createTime.compareTo(o.getCreateTime())==0){ return 0; } return 1; } @Override public String toString() { return "MySortBean{" + "name='" + name + '\'' + ", age=" + age + '}'; } } 

3.编写test方法

 package com.practice.test; import com.practice.test.comparable.MySortBean; import com.spring.testlist.util.DateUtil; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 描述: * 测试比较器 * * @author cui * @create 2018-12-18 14:10 */ @RunWith(SpringJUnit4ClassRunner.class) public class TestCompare { @Test public void testComparable(){ MySortBean m1 = new MySortBean(); m1.setAge(1); m1.setCreateTime(DateUtil.parseDate("2019-01-21 16:13:18")); MySortBean m2 = new MySortBean(); m2.setAge(2); m2.setCreateTime(DateUtil.parseDate("2019-01-23 16:13:18")); MySortBean m3 = new MySortBean(); m3.setAge(3); m3.setCreateTime(DateUtil.parseDate("2019-01-22 16:13:18")); MySortBean m4 = new MySortBean(); m4.setAge(4); m4.setCreateTime(DateUtil.parseDate("2019-01-24 16:13:18")); MySortBean m5 = new MySortBean(); m5.setAge(5); m5.setCreateTime(DateUtil.parseDate("2019-01-25 16:13:18")); List l = new ArrayList<>(5); l.add(m1); l.add(m2); l.add(m4); l.add(m5); l.add(m3); System.out.println("排序前:"); for (MySortBean i:l) { System.out.println(DateUtil.formatDate(i.getCreateTime(),"yyyy-MM-dd HH:mm:ss")); } /** * 自定义排序 * 直接return -1 倒叙排列,list顺序颠倒输出 * * if (o1.getAge()>o2.getAge()){ *           return 1; *         } *         return -1; *         以上升序输出 * * if (o1.getAge()>o2.getAge()){ *           return -1; *         } *         return 1; *         以上降序输出 * * */ /*    Comparator comparator = new Comparator() { @Override public int compare(MySortBean o1,MySortBean o2) { if (o1.getAge()>o2.getAge()){ return -1; } return 1; } }; l.sort(comparator);*/ l.sort(MySortBean::compareTo); System.out.println("--------"); System.out.println("排序后:"); for (MySortBean i:l) { System.out.println(DateUtil.formatDate(i.getCreateTime(),"yyyy-MM-dd HH:mm:ss")); } } } 

4.时间格式化工具类

 package com.spring.testlist.util; import org.apache.commons.lang3.time.DateFormatUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 日期工具类, 继承org.apache.commons.lang.time.DateUtils类 * * @author cui * @create 2018-10-26 15:30 **/ public class DateUtil extends org.apache.commons.lang3.time.DateUtils{ private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; /** * 得到当前日期字符串 格式(yyyy-MM-dd) */ public static String getDate() { return getDate("yyyy-MM-dd"); } /** * 得到当前日期字符串 格式(yyyyMMdd) */ public static String getSizeDate() { return getDate("yyyyMMdd"); } /** * 得到当前日期字符串 格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E" */ public static String getDate(String pattern) { return DateFormatUtils.format(new Date(), pattern); } /** * 得到日期字符串 默认格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E" */ public static String formatDate(Date date, Object... pattern) { if (date == null) { return null; } String formatDate = null; if (pattern != null && pattern.length > 0) { formatDate = DateFormatUtils.format(date, pattern[0].toString()); } else { formatDate = DateFormatUtils.format(date, "yyyy-MM-dd"); } return formatDate; } /** * 得到日期时间字符串,转换格式(yyyy-MM-dd HH:mm:ss) */ public static String formatDateTime(Date date) { return formatDate(date, "yyyy

以上就是java 实现Comparable接口排序,升序、降序、倒叙的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java