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

对list某个条件排序,并实现分页的更多相关文章

  1. MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)

    MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not nul ...

  2. SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...

  3. spring jpa Pageable 分页之---多条件排序

    Sort sort = new Sort(Direction.ASC, "sort").and(new Sort(Direction.DESC, groupField));//排序 ...

  4. Javascript 迭代法实现数组多条件排序

    多条件排序可能有很多种思路,效率也各不相同,我的方法可能只适合自己用,毕竟目的是为了实现功能,所以采用了最笨的方法,不过效果还是很理想的,经过多次测试,6列1000行数据,平均排序时间大约是:28ms ...

  5. Oracle order by case when 多条件排序

    ORACLE sql 排序 根据两个条件排序,根据id号由小到大排序,同时country字段是北京的排最前面前面,其次上海,..大连,最后是其他城市,怎么写? 写法如下:select * from p ...

  6. 飘逸的python - 多条件排序及itemgetter的应用

    曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣. 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相 ...

  7. 飘逸的python - 有的升序有的降序的情况下怎么多条件排序

    之前在统计导出各区服玩家消费的时候需要进行升序降序混搭的多条件排序. 需求是这样的.区服从小到大排,如果区服相同,则按消费从大到小排. 实现方法是利用python的sort算法是稳定排序,对数据进行多 ...

  8. python sorted函数多条件排序是怎么回事

    首先,要知道sorted 内部实现使用了归并排序,而归并排序是稳定的排序,就是说当元素比不出大小时,其相对位置是不变的. 那么,利用稳定排序的特性,key函数有几个返回值就排序几次,先排序次要条件,后 ...

  9. [Python] dict字典排序和多条件排序

    利用lambda实现排序:要实现多条件排序,只需要依次指定排序的标准,具体实现如下 counter = {'是': 1, '不是': 1, '你': 3} counter_list = sorted( ...

  10. Sql多条件排序

    多条件排序可以通过在order by语句后面使用case when then条件语句来实现. end 例子: 1.创建表case_test 共有id,case_type,case_location,c ...

随机推荐

  1. string.Format 格式化

    1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...

  2. js array 排序

    数据 let data = [ {chinese: '蔡司', english: 'Chase',score:67}, {chinese: '艾伦', english: 'Allen',score:7 ...

  3. django.http.request中HttpRequest对象的一些属性与方法

    HttpRequest对象的属性 属性 描述 path 表示提交请求页面完整地址的字符串,不包括域名,如 "/music/bands/the_beatles/". method 表 ...

  4. Java 之 转换流

    一.字符编码和字符集 二.编码引发的问题 当我们使用 UTF-8 编码保存文件时,用 UTF-8 再次读取不会出现任何问题.但是,当使用其他的编码(如GBK)读取文件时,就会出现乱码现象. Demo: ...

  5. Eclipse 交叉编译环境

    创建空工程 添加交叉编译环境 添加工程文件 如需修改交叉编译环境 Cross GCC:使用交叉编译命令编译,需要自己指定 MinGW GCC:使用make命令编译,需要有Makefile Make T ...

  6. mysql存储过程事务

    之前在写一个存储过程的时候由于不仔细导致数据库锁死,这里反省一下. 存储过程是这样的:把数据按顺序插入三张表,如果其中任何一处出错,就把前面已经做了的操作进行回滚,存储过程里面是用事务实现的,我是这么 ...

  7. py map reduce filter 总结

    array=[1,3,4,71,2] ret=[] for i in array: ret.append(i**2) print(ret) #如果我们有一万个列表,那么你只能把上面的逻辑定义成函数 d ...

  8. 分组函数(groupby、itemgetter)

    from itertools import groupby from operator import itemgetter d1={'name':'liuyi','age':25,'city':'SZ ...

  9. awk初级教程

    参考:sed & awk 概述 sed & awk指令组成 与sed区别 尽管awk指令与sed指令的结构相同,都由模式和过程两部分组成,但过程本身有很大不同. awk看上去不像编辑器 ...

  10. Codeforces #503 C. Elections(贪心,逆向

    我的参考的博客地址 题目 逆向考虑. 暴力遍历 k(k是1到n/2+1 范围内的),挑出对于每一个k,记对于党派 i,num[ i ]为其票数.num[ i ]小于k-1的就不用改变投票了(这部分是比 ...