mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix PageUtil bug
This commit is contained in:
@@ -2091,7 +2091,7 @@ public class CollUtil {
|
||||
* 采用{@link BoundedPriorityQueue}实现分页取局部
|
||||
*
|
||||
* @param <T> 集合元素类型
|
||||
* @param pageNo 页码,从1开始计数,0和1效果相同
|
||||
* @param pageNo 页码,从0开始计数,0表示第一页
|
||||
* @param pageSize 每页的条目数
|
||||
* @param comparator 比较器
|
||||
* @param colls 集合数组
|
||||
@@ -2114,7 +2114,7 @@ public class CollUtil {
|
||||
* 对指定List分页取值
|
||||
*
|
||||
* @param <T> 集合元素类型
|
||||
* @param pageNo 页码,从1开始计数,0和1效果相同
|
||||
* @param pageNo 页码,从0开始计数,0表示第一页
|
||||
* @param pageSize 每页的条目数
|
||||
* @param list 列表
|
||||
* @return 分页后的段落内容
|
||||
|
@@ -1753,6 +1753,79 @@ public class DateUtil {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 计时器<br>
|
||||
* 计算某个过程花费的时间,精确到毫秒
|
||||
*
|
||||
* @param isNano 是否使用纳秒计数,false则使用毫秒
|
||||
* @return Timer
|
||||
* @since 5.2.3
|
||||
*/
|
||||
public static TimeInterval timer(boolean isNano) {
|
||||
return new TimeInterval(isNano);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建秒表{@link StopWatch},用于对代码块的执行时间计数
|
||||
* <p>
|
||||
* 使用方法如下:
|
||||
*
|
||||
* <pre>
|
||||
* StopWatch stopWatch = DateUtil.createStopWatch();
|
||||
*
|
||||
* // 任务1
|
||||
* stopWatch.start("任务一");
|
||||
* Thread.sleep(1000);
|
||||
* stopWatch.stop();
|
||||
*
|
||||
* // 任务2
|
||||
* stopWatch.start("任务一");
|
||||
* Thread.sleep(2000);
|
||||
* stopWatch.stop();
|
||||
*
|
||||
* // 打印出耗时
|
||||
* Console.log(stopWatch.prettyPrint());
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @return {@link StopWatch}
|
||||
* @since 5.2.3
|
||||
*/
|
||||
public static StopWatch createStopWatch() {
|
||||
return new StopWatch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建秒表{@link StopWatch},用于对代码块的执行时间计数
|
||||
* <p>
|
||||
* 使用方法如下:
|
||||
*
|
||||
* <pre>
|
||||
* StopWatch stopWatch = DateUtil.createStopWatch("任务名称");
|
||||
*
|
||||
* // 任务1
|
||||
* stopWatch.start("任务一");
|
||||
* Thread.sleep(1000);
|
||||
* stopWatch.stop();
|
||||
*
|
||||
* // 任务2
|
||||
* stopWatch.start("任务一");
|
||||
* Thread.sleep(2000);
|
||||
* stopWatch.stop();
|
||||
*
|
||||
* // 打印出耗时
|
||||
* Console.log(stopWatch.prettyPrint());
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @param id 用于标识秒表的唯一ID
|
||||
* @return {@link StopWatch}
|
||||
* @since 5.2.3
|
||||
*/
|
||||
public static StopWatch createStopWatch(String id) {
|
||||
return new StopWatch(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生日转为年龄,计算法定年龄
|
||||
*
|
||||
|
@@ -14,10 +14,17 @@ public class TimeInterval implements Serializable {
|
||||
private long time;
|
||||
private boolean isNano;
|
||||
|
||||
/**
|
||||
* 构造,默认使用毫秒计数
|
||||
*/
|
||||
public TimeInterval() {
|
||||
this(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
* @param isNano 是否使用纳秒计数,false则使用毫秒
|
||||
*/
|
||||
public TimeInterval(boolean isNano) {
|
||||
this.isNano = isNano;
|
||||
start();
|
||||
|
@@ -14,25 +14,25 @@ public class PageUtil {
|
||||
* 例如:
|
||||
*
|
||||
* <pre>
|
||||
* 页码:1,每页10 =》 0
|
||||
* 页码:2,每页10 =》 10
|
||||
* 页码:0,每页10 =》 0
|
||||
* 页码:1,每页10 =》 10
|
||||
* ……
|
||||
* </pre>
|
||||
*
|
||||
* @param pageNo 页码(从1计数)
|
||||
* @param pageNo 页码(从0计数)
|
||||
* @param pageSize 每页条目数
|
||||
* @return 开始位置
|
||||
*/
|
||||
public static int getStart(int pageNo, int pageSize) {
|
||||
if (pageNo < 1) {
|
||||
pageNo = 1;
|
||||
if (pageNo < 0) {
|
||||
pageNo = 0;
|
||||
}
|
||||
|
||||
if (pageSize < 1) {
|
||||
pageSize = 0;
|
||||
}
|
||||
|
||||
return (pageNo - 1) * pageSize;
|
||||
return pageNo * pageSize;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -41,12 +41,12 @@ public class PageUtil {
|
||||
* 例如:
|
||||
*
|
||||
* <pre>
|
||||
* 页码:1,每页10 =》 [0, 10]
|
||||
* 页码:2,每页10 =》 [10, 20]
|
||||
* 页码:0,每页10 =》 [0, 10]
|
||||
* 页码:1,每页10 =》 [10, 20]
|
||||
* ……
|
||||
* </pre>
|
||||
*
|
||||
* @param pageNo 页码(从1计数)
|
||||
* @param pageNo 页码(从0计数)
|
||||
* @param pageSize 每页条目数
|
||||
* @return 第一个数为开始位置,第二个数为结束位置
|
||||
*/
|
||||
|
@@ -18,6 +18,7 @@ import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -39,7 +40,7 @@ public class CollUtilTest {
|
||||
Dict v1 = Dict.create().set("id", 12).set("name", "张三").set("age", 23);
|
||||
Dict v2 = Dict.create().set("age", 13).set("id", 15).set("name", "李四");
|
||||
|
||||
final String[] keys = v1.keySet().toArray(new String[v1.size()]);
|
||||
final String[] keys = v1.keySet().toArray(new String[0]);
|
||||
ArrayList<Object> v1s = CollectionUtil.valuesOfKeys(v1, keys);
|
||||
Assert.assertTrue(v1s.contains(12));
|
||||
Assert.assertTrue(v1s.contains(23));
|
||||
@@ -345,6 +346,7 @@ public class CollUtilTest {
|
||||
|
||||
@Test
|
||||
public void getTest() {
|
||||
@SuppressWarnings("RedundantArrayCreation")
|
||||
HashSet<String> set = CollUtil.newHashSet(true, new String[] { "A", "B", "C", "D" });
|
||||
String str = CollUtil.get(set, 2);
|
||||
Assert.assertEquals("C", str);
|
||||
@@ -546,8 +548,8 @@ public class CollUtilTest {
|
||||
|
||||
@Test
|
||||
public void sortPageAllTest() {
|
||||
ArrayList<Integer> list = CollUtil.newArrayList(1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||
List<Integer> sortPageAll = CollUtil.sortPageAll(2, 5, Comparator.reverseOrder(), list);
|
||||
List<Integer> list = CollUtil.newArrayList(1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||
List<Integer> sortPageAll = CollUtil.sortPageAll(1, 5, Comparator.reverseOrder(), list);
|
||||
|
||||
Assert.assertEquals(CollUtil.newArrayList(4, 3, 2, 1), sortPageAll);
|
||||
}
|
||||
@@ -583,7 +585,7 @@ public class CollUtilTest {
|
||||
|
||||
Map<String, Integer> map = CollUtil.zip(keys, values);
|
||||
|
||||
Assert.assertEquals(4, map.size());
|
||||
Assert.assertEquals(4, Objects.requireNonNull(map).size());
|
||||
|
||||
Assert.assertEquals(1, map.get("a").intValue());
|
||||
Assert.assertEquals(2, map.get("b").intValue());
|
||||
|
Reference in New Issue
Block a user