package com.jcloud.aioc.api.controller.Test; import com.alibaba.fastjson.JSON; import org.apache.poi.ss.formula.functions.T; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class Test { public static void main(String[] args) { List<Student> students = new ArrayList<>(); students.add(new Student("張三","2017-07-01")); students.add(new Student("李四", "2018-07-02")); students.add(new Student("cde", "2018-06-01")); students.add(new Student("def", "2018-07-01")); students.add(new Student("efg", "2018-04-01")); //排序 Collections.sort(students, new Comparator<Student>(){ /* * int compare(Person p1, Person p2) 返回一個基本類型的整型, * 返回負數表示:p1 小於p2, * 返回0 表示:p1和p2相等, * 返回正數表示:p1大於p2 */ public int compare(Student p1, Student p2) { //按照Person的年齡進行升序排列 if(getDate(p1.getCreateTime()) > getDate(p2.getCreateTime())){ return 1; } if(getDate(p1.getCreateTime())==getDate(p2.getCreateTime())){ return 0; } return -1; } }.reversed()); for (Student student : students) { System.out.println(student.getName()+":"+student.getCreateTime()); } PageableList page=new PageableList(0); PageAble page1 = page.page(students); System.out.println("分頁后"); List<T> data = page1.getData(); String s = JSON.toJSONString(page1); System.out.println(s); } public static Long getDate(String date){ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { return dateFormat.parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return null; } }
package com.jcloud.aioc.api.controller.Test; import java.awt.print.Pageable; import java.util.ArrayList; import java.util.List; public class PageableList { private int pageno; private int pageSize=2; private int sum; private int totalPage=0; public PageableList(int pageno) { this.pageno = pageno; } public PageAble page(List list){ PageAble page=new PageAble(); //分頁 Integer totalNum = list.size(); //默認從零分頁,這里要考慮這種情況,下面要計算。 int pageNum = pageno + 1; if (totalNum > 0) { totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1; } if (pageNum > totalPage) { pageNum = totalPage; } int startPoint = (pageNum - 1) * pageSize; int endPoint = startPoint + pageSize; if (totalNum <= endPoint) { endPoint = totalNum; } list = list.subList(startPoint, endPoint); page.setCode("200"); page.setPageno(pageno); page.setSum(pageNum); page.setTotalPage(totalPage); page.setData(list); return page; } }
package com.jcloud.aioc.api.controller.Test; public class Student { private String name; private String createTime; public Student(String name, String createTime) { this.name = name; this.createTime = createTime; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } }
package com.jcloud.aioc.api.controller.Test; import org.apache.poi.ss.formula.functions.T; import java.util.List; public class PageAble { private String code; private int pageno; private int totalPage; private int sum; private List<T> data; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public int getPageno() { return pageno; } public void setPageno(int pageno) { this.pageno = pageno; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getSum() { return sum; } public void setSum(int sum) { this.sum = sum; } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } }
//1.jdk8 lambda排序,帶參數類型
orderList.sort(( Order ord1, Order ord2) -> ord2.getOrderId().compareTo(ord1.getOrderId()));
//2.jdk8 lambda排序,不帶參數類型
orderList.sort(( ord1, ord2) -> ord2.getOrderId().compareTo(ord1.getOrderId()));
//3.jdk8 升序排序,Comparator提供的靜態方法
Collections.sort(orderList, Comparator.comparing(Order::getOrderId));
//4.jdk8 降序排序,Comparator提供的靜態方法
Collections.sort(orderList, Comparator.comparing(Order::getOrderId).reversed());
//5.jdk8 組合排序,Comparator提供的靜態方法,先按orderId排序,orderId相同的按userId排序
Collections.sort(orderList, Comparator.comparing(Order::getOrderId).reversed().thenComparing(Order::getUserId));
orderList.stream().forEach(str -> System.out.println(str.getOrderId()+"/" + str.getUserId()));
參考:https://www.cnblogs.com/WAbby/p/9249833.html