对list某个条件排序,并实现分页
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某个条件排序,并实现分页的更多相关文章
- MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)
MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not nul ...
- SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...
- spring jpa Pageable 分页之---多条件排序
Sort sort = new Sort(Direction.ASC, "sort").and(new Sort(Direction.DESC, groupField));//排序 ...
- Javascript 迭代法实现数组多条件排序
多条件排序可能有很多种思路,效率也各不相同,我的方法可能只适合自己用,毕竟目的是为了实现功能,所以采用了最笨的方法,不过效果还是很理想的,经过多次测试,6列1000行数据,平均排序时间大约是:28ms ...
- Oracle order by case when 多条件排序
ORACLE sql 排序 根据两个条件排序,根据id号由小到大排序,同时country字段是北京的排最前面前面,其次上海,..大连,最后是其他城市,怎么写? 写法如下:select * from p ...
- 飘逸的python - 多条件排序及itemgetter的应用
曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣. 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相 ...
- 飘逸的python - 有的升序有的降序的情况下怎么多条件排序
之前在统计导出各区服玩家消费的时候需要进行升序降序混搭的多条件排序. 需求是这样的.区服从小到大排,如果区服相同,则按消费从大到小排. 实现方法是利用python的sort算法是稳定排序,对数据进行多 ...
- python sorted函数多条件排序是怎么回事
首先,要知道sorted 内部实现使用了归并排序,而归并排序是稳定的排序,就是说当元素比不出大小时,其相对位置是不变的. 那么,利用稳定排序的特性,key函数有几个返回值就排序几次,先排序次要条件,后 ...
- [Python] dict字典排序和多条件排序
利用lambda实现排序:要实现多条件排序,只需要依次指定排序的标准,具体实现如下 counter = {'是': 1, '不是': 1, '你': 3} counter_list = sorted( ...
- Sql多条件排序
多条件排序可以通过在order by语句后面使用case when then条件语句来实现. end 例子: 1.创建表case_test 共有id,case_type,case_location,c ...
随机推荐
- 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)
原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- Gogs + Drone 实现CI/CD(CD)
前文已经实现CI部分,本文继续以Asp.Net Core实现CD部分. 创建gogs仓库 首先在gogs创建一个空项目drone-ci-demo,本地新建一个asp.net core项目,并且在与.c ...
- 进程间的通信—套接字(socket)
前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程.通常我们使用socket进行网 ...
- BASIS小问题汇总1
try to start SAP system but failed 2019-04-04 Symptom: when i tried to start SAP system, using the c ...
- Yarn介绍(设计理念与基本架构)
Yarn : 新的计算框架,是一个全局资源管理器,负责整个集群的资源管理和分配 一. Yarn产生背景 Hadoop1.0MR有局限性,概括为以下几个方面 : 扩展性差 可靠性差 资 ...
- Linux 中常见的填空题
一.填空题: 1. 在Linux系统中,以文件方式访问设备 . 2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用i节点来标识. 4. ...
- ACM-ICPC 2018 徐州赛区网络预赛 A. Hard to prepare (组合数学,递归)
A. Hard to prepare After Incident, a feast is usually held in Hakurei Shrine. This time Reimu asked ...
- 安全学习概览——恶意软件分析、web渗透、漏洞利用和挖掘、内网渗透、IoT安全分析、区块链、黑灰产对抗
1 基础知识1.1 网络熟悉常见网络协议:https://www.ietf.org/standards/rfcs/1.2 操作系统1.3 编程2 恶意软件分析2.1 分类2.1.1 木马2.1.2 B ...
- AJAX学习笔记——JSON
JSON基本概念 1.JSON : JavaScript对象表示法( JavaScript Object Notation ) 2.JSON是存储和交换文本信息的语法,类似XML.它采用键值对的方式来 ...
- NoClassDefFoundError错误发生的原因
今上午项目怎么也起不来,总报这个错,上网查一下,大概解释如下:NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误.例如 ...