工作中遇到一个问题:
调用别人家的接口查询数据,可是接口中查询的结果并没有对结果进行时间排序。于是就用了一下方法对查询的结果集根据时间排序。我用简单的用户类来演示排序过程,做一下记录。
本次测试使用了nutz框架的Json工具类对list结果进行打印,maven引用如下:
<dependency> <groupId>org.nutz</groupId> <artifactId>nutz</artifactId> <version>1.r.66</version> </dependency>
用户类:
public class Human { private String name; private String birthday; public Human() { } public Human(String name, String birthday) { this.name = name; this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } }
测试类:
import org.junit.Test; import org.nutz.json.Json; import org.nutz.json.JsonFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * list排序测试类 */ public class ListSortTest { public static List initList() { List<Human> list = new ArrayList<>(); list.add(new Human("李明", "1987-05-23 12:34:07")); list.add(new Human("王明", "1977-05-23 05:04:07")); list.add(new Human("万明", "1987-05-23 09:34:07")); list.add(new Human("钱明", "1997-05-23 10:24:08")); list.add(new Human("赵明", "1987-05-23 12:34:08")); return list; } /** * 根据list列表元素的时间字段进行升序排序 */ @Test public void listSort1() { List<Human> list = initList(); System.out.println("排序前----:" + Json.toJson(list, JsonFormat.compact())); Collections.sort(list, new Comparator<Human>() { @Override public int compare(Human h1, Human h2) { return h1.getBirthday().compareTo(h2.getBirthday()); } }); System.out.println("排序后----:" + Json.toJson(list, JsonFormat.compact())); } /** * 根据list列表元素的时间字段进行降序排序(升序排序后取反) */ @Test public void listSort2() { List<Human> list = initList(); System.out.println("排序前----:" + Json.toJson(list, JsonFormat.compact())); // 升序排序 Collections.sort(list, new Comparator<Human>() { @Override public int compare(Human h1, Human h2) { return h1.getBirthday().compareTo(h2.getBirthday()); } }); // 取反 Collections.reverse(list); System.out.println("排序后----:" + Json.toJson(list, JsonFormat.compact())); } /** * 根据list列表元素的时间字段进行降序排序(另一种方式,不需要取反) */
@Test public void listSort2() { List<Human> list = initList(); System.out.println("排序前----:" + Json.toJson(list, JsonFormat.compact())); Collections.sort(list, new Comparator<Human>() { @Override public int compare(Human h1, Human h2) { // 直接反过来比较 return h2.getBirthday().compareTo(h1.getBirthday()); } }); System.out.println("排序后----:" + Json.toJson(list, JsonFormat.compact())); }
/** * 根据list列表元素的时间字段进行降序排序 */ @Test public void listSort3() { List<Human> list = initList(); System.out.println("排序前----:" + Json.toJson(list, JsonFormat.compact())); Collections.sort(list, new Comparator<Human>() { @Override public int compare(Human o1, Human o2) { if (o1.getBirthday().compareTo(o2.getBirthday()) > 0) { return -1; } else if (o1.getBirthday().compareTo(o2.getBirthday()) < 0) { return 1; } else { return 0; } } }); System.out.println("排序后----:" + Json.toJson(list, JsonFormat.compact())); }