JAVA对list排序后分页_java8的stream实现分页查询附带排
序,看不懂你我
需求描述
今天遇到⼀个需求,做⼀个排⾏榜,要求是:⽤给定的⼀个时间段中,每个⼈最好的成绩,进⾏⽐较,然后做分页。所以这⾥就需要再service层⾃⼰做分页了。
代码
/**
* @param pageNo 页码
* @param pageSize 每页数量
*/
@Override
public List selectGroupRankingList(Integer pageNo, Integer pageSize) {
//判断页的⼤⼩
if(pageSize<=0)
{
return null;
}
//⽐较后,需要排序的结果
List returnList= new ArrayList<>();
//分页检查
pageNo = pagingCheck(pageNo, pageSize, showRankingListLine(returnList.size()));
//降序,我的Model是:GroupRankingListModel,例如以result字段进⾏排序
//先排序,然后跳过前⾯的数据,然后截取
returnPersonResult=returnPersonResult.stream().
sorted(Comparatorparing(GroupRankingListModel::getResult)).
skip((pageNo-1)*pageSize).
limit(pageSize).
List());
return returnPersonResult;
}
/**
* 检查查询的页数
* @param pageNo 页码
* @param pageSize 页⼤⼩
java stream
* @param sumCount 总记录数字
* @return 页码
*/
public Integer pagingCheck(Integer pageNo,Integer pageSize,Integer sumCount)
{
//⼀、如果传⼊的是负值,则将值改成默认值1
if(pageNo<=0)
{
return 1;
}
//⼆、如果传⼊的值⼤于最⼤的页数
/
/1.求出最⼤的页数
int maxPageCount;
//如果⼀页正好放下,则就直接除
if (sumCount %pageSize == 0)
{
maxPageCount = sumCount / pageSize;
}
//如果⼀页放不下,则直接+1
else
{
maxPageCount = (sumCount / pageSize)+1;
}
//2.如果pageNo⽐最⼤页数还⼤,
if(maxPageCount
{
return maxPageCount;
}
return pageNo;
}
总结
第⼀个段代码是核⼼代码,主要是实现java8的新特性stream流实现分页查询
第⼆个代代码的主要功能是校验页数,这⾥将页的⼤⼩作为了除数,所以也要对页的⼤⼩进⾏判断,防⽌出现/0的情况。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。