mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
commit
a6d8b3fd59
@ -1,135 +1,135 @@
|
|||||||
package cn.hutool.core.util;
|
package cn.hutool.core.util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页工具类
|
* 分页工具类
|
||||||
*
|
*
|
||||||
* @author xiaoleilu
|
* @author xiaoleilu
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class PageUtil {
|
public class PageUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将页数和每页条目数转换为开始位置<br>
|
* 将页数和每页条目数转换为开始位置<br>
|
||||||
* 此方法用于不包括结束位置的分页方法<br>
|
* 此方法用于不包括结束位置的分页方法<br>
|
||||||
* 例如:
|
* 例如:
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* 页码:1,每页10 =》 0
|
* 页码:1,每页10 =》 0
|
||||||
* 页码:2,每页10 =》 10
|
* 页码:2,每页10 =》 10
|
||||||
* ……
|
* ……
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param pageNo 页码(从1计数)
|
* @param pageNo 页码(从1计数)
|
||||||
* @param pageSize 每页条目数
|
* @param pageSize 每页条目数
|
||||||
* @return 开始位置
|
* @return 开始位置
|
||||||
*/
|
*/
|
||||||
public static int getStart(int pageNo, int pageSize) {
|
public static int getStart(int pageNo, int pageSize) {
|
||||||
if (pageNo < 1) {
|
if (pageNo < 1) {
|
||||||
pageNo = 1;
|
pageNo = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pageSize < 1) {
|
if (pageSize < 1) {
|
||||||
pageSize = 0;
|
pageSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (pageNo - 1) * pageSize;
|
return (pageNo - 1) * pageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将页数和每页条目数转换为开始位置和结束位置<br>
|
* 将页数和每页条目数转换为开始位置和结束位置<br>
|
||||||
* 此方法用于不包括结束位置的分页方法<br>
|
* 此方法用于包括结束位置的分页方法<br>
|
||||||
* 例如:
|
* 例如:
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* 页码:1,每页10 =》 [0, 10]
|
* 页码:1,每页10 =》 [0, 10]
|
||||||
* 页码:2,每页10 =》 [10, 20]
|
* 页码:2,每页10 =》 [10, 20]
|
||||||
* ……
|
* ……
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param pageNo 页码(从1计数)
|
* @param pageNo 页码(从1计数)
|
||||||
* @param pageSize 每页条目数
|
* @param pageSize 每页条目数
|
||||||
* @return 第一个数为开始位置,第二个数为结束位置
|
* @return 第一个数为开始位置,第二个数为结束位置
|
||||||
*/
|
*/
|
||||||
public static int[] transToStartEnd(int pageNo, int pageSize) {
|
public static int[] transToStartEnd(int pageNo, int pageSize) {
|
||||||
final int start = getStart(pageNo, pageSize);
|
final int start = getStart(pageNo, pageSize);
|
||||||
if (pageSize < 1) {
|
if (pageSize < 1) {
|
||||||
pageSize = 0;
|
pageSize = 0;
|
||||||
}
|
}
|
||||||
final int end = start + pageSize;
|
final int end = start + pageSize;
|
||||||
|
|
||||||
return new int[] { start, end };
|
return new int[] { start, end };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据总数计算总页数
|
* 根据总数计算总页数
|
||||||
*
|
*
|
||||||
* @param totalCount 总数
|
* @param totalCount 总数
|
||||||
* @param pageSize 每页数
|
* @param pageSize 每页数
|
||||||
* @return 总页数
|
* @return 总页数
|
||||||
*/
|
*/
|
||||||
public static int totalPage(int totalCount, int pageSize) {
|
public static int totalPage(int totalCount, int pageSize) {
|
||||||
if (pageSize == 0) {
|
if (pageSize == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return totalCount % pageSize == 0 ? (totalCount / pageSize) : (totalCount / pageSize + 1);
|
return totalCount % pageSize == 0 ? (totalCount / pageSize) : (totalCount / pageSize + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页彩虹算法<br>
|
* 分页彩虹算法<br>
|
||||||
* 来自:https://github.com/iceroot/iceroot/blob/master/src/main/java/com/icexxx/util/IceUtil.java<br>
|
* 来自:https://github.com/iceroot/iceroot/blob/master/src/main/java/com/icexxx/util/IceUtil.java<br>
|
||||||
* 通过传入的信息,生成一个分页列表显示
|
* 通过传入的信息,生成一个分页列表显示
|
||||||
*
|
*
|
||||||
* @param currentPage 当前页
|
* @param currentPage 当前页
|
||||||
* @param pageCount 总页数
|
* @param pageCount 总页数
|
||||||
* @param displayCount 每屏展示的页数
|
* @param displayCount 每屏展示的页数
|
||||||
* @return 分页条
|
* @return 分页条
|
||||||
*/
|
*/
|
||||||
public static int[] rainbow(int currentPage, int pageCount, int displayCount) {
|
public static int[] rainbow(int currentPage, int pageCount, int displayCount) {
|
||||||
boolean isEven = true;
|
boolean isEven = true;
|
||||||
isEven = displayCount % 2 == 0;
|
isEven = displayCount % 2 == 0;
|
||||||
int left = displayCount / 2;
|
int left = displayCount / 2;
|
||||||
int right = displayCount / 2;
|
int right = displayCount / 2;
|
||||||
|
|
||||||
int length = displayCount;
|
int length = displayCount;
|
||||||
if (isEven) {
|
if (isEven) {
|
||||||
right++;
|
right++;
|
||||||
}
|
}
|
||||||
if (pageCount < displayCount) {
|
if (pageCount < displayCount) {
|
||||||
length = pageCount;
|
length = pageCount;
|
||||||
}
|
}
|
||||||
int[] result = new int[length];
|
int[] result = new int[length];
|
||||||
if (pageCount >= displayCount) {
|
if (pageCount >= displayCount) {
|
||||||
if (currentPage <= left) {
|
if (currentPage <= left) {
|
||||||
for (int i = 0; i < result.length; i++) {
|
for (int i = 0; i < result.length; i++) {
|
||||||
result[i] = i + 1;
|
result[i] = i + 1;
|
||||||
}
|
}
|
||||||
} else if (currentPage > pageCount - right) {
|
} else if (currentPage > pageCount - right) {
|
||||||
for (int i = 0; i < result.length; i++) {
|
for (int i = 0; i < result.length; i++) {
|
||||||
result[i] = i + pageCount - displayCount + 1;
|
result[i] = i + pageCount - displayCount + 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < result.length; i++) {
|
for (int i = 0; i < result.length; i++) {
|
||||||
result[i] = i + currentPage - left + (isEven ? 1 : 0);
|
result[i] = i + currentPage - left + (isEven ? 1 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < result.length; i++) {
|
for (int i = 0; i < result.length; i++) {
|
||||||
result[i] = i + 1;
|
result[i] = i + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页彩虹算法(默认展示10页)<br>
|
* 分页彩虹算法(默认展示10页)<br>
|
||||||
* 来自:https://github.com/iceroot/iceroot/blob/master/src/main/java/com/icexxx/util/IceUtil.java
|
* 来自:https://github.com/iceroot/iceroot/blob/master/src/main/java/com/icexxx/util/IceUtil.java
|
||||||
*
|
*
|
||||||
* @param currentPage 当前页
|
* @param currentPage 当前页
|
||||||
* @param pageCount 总页数
|
* @param pageCount 总页数
|
||||||
* @return 分页条
|
* @return 分页条
|
||||||
*/
|
*/
|
||||||
public static int[] rainbow(int currentPage, int pageCount) {
|
public static int[] rainbow(int currentPage, int pageCount) {
|
||||||
return rainbow(currentPage, pageCount, 10);
|
return rainbow(currentPage, pageCount, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user