对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 ...
随机推荐
- nginx 反向代理配置(二)
上一篇文章主要是对 nginx 各个模块做了一个介绍,以及对什么是反向代理在文章开头做了一个简单介绍,这篇文章我们主要来看下如何进行 nginx 反向代理的配置 proxy 模块 nginx ...
- 微信开发者工具 关于no such file or directory
在新建页面中,保存后弹出 “ no such file or directory ” 错误 原因是打开了一个文件,然后在目录树中删除了它,但是这个被删除的页面依旧在打开状态,开发者工具在编译保存时由于 ...
- Python 使用gevent实现多任务
import gevent import time # 如果需要默认的 time.sleep(0.5) 需要打补丁 from gevent import monkey monkey.patch_all ...
- DBShop后台RCE之曲线救国
本文最早发布在朋友的公众号 黑客信徒 中,文章是自己写的 不存在抄袭 特此申明 --------------------- 前言 DBShop是一款基于ZendFramework2框架的电子商务系统 ...
- CentOS7.x安装nginx
1.安装先决条件 yum install yum-utils 2.设置yum存储库和创建/etc/yum.repos.d/nginx.repo 使用以下内容命名的文件 :稳定版 [nginx-stab ...
- java - day011 - 集合, ArrayList HashMap,HashSet, Iterator 接口, for-each 循环格式
集合 ArrayList 丑数: 能被3,5,7整除多次, ArrayList list 接口 | - ArrayList | - Linked ...
- Linux中安装配置启动关闭nginx等一系列动作
Nginx简介 1.Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器: 2.Nginx 是由俄罗斯人 Igor Sysoev 采用C语言开发编写的 ...
- 2. 软件有很多种,也有各种分类办法: ShrinkWrap (在包装盒子里面的软件,软件在CD/DVD上); Web APP (基于网页的软件); Internal Software (企业或学校或某组织内部的软件); Games (游戏); Mobile Apps (手机应用); Operating Systems (操作系统); Tools
选取对你最相关的一类软件, 请回答:(web app) 1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的? 他们的目标都是盈利么? 他们的目标都是赚取用户 ...
- IoC与DI的理解
首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/b ...
- 1227:Ride to Office
题目来源:http://ybt.ssoier.cn:8088/problem_show.php?pid=1227 1227:Ride to Office 时间限制: 1000 ms 内 ...