fix PageUtil bug

This commit is contained in:
Looly
2020-03-13 16:18:11 +08:00
parent 98cbc875dc
commit a508f2d5aa
11 changed files with 128 additions and 33 deletions

View File

@@ -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 分页后的段落内容

View File

@@ -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);
}
/**
* 生日转为年龄,计算法定年龄
*

View File

@@ -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();

View File

@@ -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 第一个数为开始位置,第二个数为结束位置
*/

View File

@@ -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());