diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java
index d05b98999..cfdca2ada 100755
--- a/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java
@@ -8,7 +8,7 @@ import cn.hutool.core.collection.partition.RandomAccessPartition;
import cn.hutool.core.comparator.PinyinComparator;
import cn.hutool.core.comparator.PropertyComparator;
import cn.hutool.core.lang.Assert;
-import cn.hutool.core.math.PageInfo;
+import cn.hutool.core.lang.page.PageInfo;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
diff --git a/hutool-core/src/main/java/cn/hutool/core/math/NavigatePageInfo.java b/hutool-core/src/main/java/cn/hutool/core/lang/page/NavigatePageInfo.java
similarity index 63%
rename from hutool-core/src/main/java/cn/hutool/core/math/NavigatePageInfo.java
rename to hutool-core/src/main/java/cn/hutool/core/lang/page/NavigatePageInfo.java
index cee14bc65..d605be398 100644
--- a/hutool-core/src/main/java/cn/hutool/core/math/NavigatePageInfo.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/page/NavigatePageInfo.java
@@ -1,12 +1,13 @@
-package cn.hutool.core.math;
+package cn.hutool.core.lang.page;
-public class NavigatePageInfo extends PageInfo{
+public class NavigatePageInfo extends PageInfo {
- private final int navigatePages = 8; //导航页码数
+ private final int navigatePages; //导航页码数
private int[] navigatePageNumbers; //所有导航页号
- public NavigatePageInfo(final int total, final int pageSize) {
+ public NavigatePageInfo(final int total, final int pageSize, int navigatePages) {
super(total, pageSize);
+ this.navigatePages = navigatePages;
//基本参数设定之后进行导航页面的计算
calcNavigatePageNumbers();
@@ -22,17 +23,30 @@ public class NavigatePageInfo extends PageInfo{
}
public String toString() {
- final StringBuilder str = new StringBuilder(super.toString());
- str.append(", {navigatePageNumbers=");
- final int len = navigatePageNumbers.length;
- if (len > 0) str.append(navigatePageNumbers[0]);
- for (int i = 1; i < len; i++) {
- str.append(" ").append(navigatePageNumbers[i]);
+ final StringBuilder str = new StringBuilder();
+
+ if(false == isFirstPage()){
+ str.append("<< ");
+ }
+ if (navigatePageNumbers.length > 0) {
+ str.append(wrap(navigatePageNumbers[0]));
+ }
+ for (int i = 1; i < navigatePageNumbers.length; i++) {
+ str.append(" ").append(wrap(navigatePageNumbers[i]));
+ }
+ if(false == isLastPage()){
+ str.append(" >>");
}
- str.append("}");
return str.toString();
}
+ private String wrap(final int pageNumber){
+ if(this.pageNo == pageNumber){
+ return "[" + pageNumber + "]";
+ }
+ return String.valueOf(pageNumber);
+ }
+
/**
* 计算导航页
*/
diff --git a/hutool-core/src/main/java/cn/hutool/core/math/PageInfo.java b/hutool-core/src/main/java/cn/hutool/core/lang/page/PageInfo.java
similarity index 89%
rename from hutool-core/src/main/java/cn/hutool/core/math/PageInfo.java
rename to hutool-core/src/main/java/cn/hutool/core/lang/page/PageInfo.java
index a84079fff..461d1f87e 100644
--- a/hutool-core/src/main/java/cn/hutool/core/math/PageInfo.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/page/PageInfo.java
@@ -1,4 +1,4 @@
-package cn.hutool.core.math;
+package cn.hutool.core.lang.page;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.DefaultSegment;
@@ -227,7 +227,8 @@ public class PageInfo {
/**
* 设置首页编号,即以数字几为第一页标志
- * 如设置0,则0表示第一页,1表示第二页
+ * 如设置0,则0表示第一页,1表示第二页
+ * 设置此参数后,须调用{@link #setPageNo(int)} 重新设置当前页的页码
*
* @param firstPageNo 首页编号
* @return this
@@ -238,7 +239,9 @@ public class PageInfo {
}
/**
- * 设置当前页码
+ * 设置当前页码,具体这个页码代表实际页,取决于{@link #setFirstPageNo(int)}设置的值。
+ * 例如当{@link #setFirstPageNo(int)}设置为1时,1表示首页;设置为0时,0表示首页,依次类推。
+ * 当设置页码小于{@link #getFirstPageNo()}值时,始终为{@link #getFirstPageNo()}
*
* @param pageNo 当前页码
* @return this
@@ -251,7 +254,8 @@ public class PageInfo {
}
/**
- * 下一页,即当前页码+1
+ * 下一页,即当前页码+1
+ * 当超过末页时,此方法指向的页码值始终为{@link #getPages()} + 1,即最后一页后的空白页。
*
* @return this
*/
@@ -264,7 +268,7 @@ public class PageInfo {
*
* @return this
*/
- public PageInfo PreviousPage() {
+ public PageInfo previousPage() {
return setPageNo(this.pageNo - 1);
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/page/package-info.java b/hutool-core/src/main/java/cn/hutool/core/lang/page/package-info.java
new file mode 100644
index 000000000..66d7723fe
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/page/package-info.java
@@ -0,0 +1,10 @@
+/**
+ * 提供分页信息封装,主要包括:
+ *
+ * - {@link cn.hutool.core.lang.page.PageInfo}: 提供分页信息。
+ * - {@link cn.hutool.core.lang.page.NavigatePageInfo}: 提供分页导航信息。
+ *
+ *
+ * @author looly
+ */
+package cn.hutool.core.lang.page;
diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/ListUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/ListUtilTest.java
index e4e40d0ac..d54714b4b 100644
--- a/hutool-core/src/test/java/cn/hutool/core/collection/ListUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/collection/ListUtilTest.java
@@ -2,7 +2,7 @@ package cn.hutool.core.collection;
import cn.hutool.core.date.StopWatch;
import cn.hutool.core.lang.Console;
-import cn.hutool.core.math.PageInfo;
+import cn.hutool.core.lang.page.PageInfo;
import cn.hutool.core.util.RandomUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/page/NavigatePageInfoTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/page/NavigatePageInfoTest.java
new file mode 100644
index 000000000..775d6daf0
--- /dev/null
+++ b/hutool-core/src/test/java/cn/hutool/core/lang/page/NavigatePageInfoTest.java
@@ -0,0 +1,37 @@
+package cn.hutool.core.lang.page;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class NavigatePageInfoTest {
+
+ @Test
+ public void naviTest1(){
+ // 首页
+ final NavigatePageInfo navigatePageInfo = new NavigatePageInfo(10, 2, 6);
+ Assert.assertEquals("[1] 2 3 4 5 >>", navigatePageInfo.toString());
+
+ // 中间页
+ navigatePageInfo.nextPage();
+ Assert.assertEquals("<< 1 [2] 3 4 5 >>", navigatePageInfo.toString());
+
+ // 尾页
+ navigatePageInfo.setPageNo(5);
+ Assert.assertEquals("<< 1 2 3 4 [5]", navigatePageInfo.toString());
+ }
+
+ @Test
+ public void naviTest2(){
+ // 首页
+ final NavigatePageInfo navigatePageInfo = new NavigatePageInfo(10, 2, 4);
+ Assert.assertEquals("[1] 2 3 4 >>", navigatePageInfo.toString());
+
+ // 中间页
+ navigatePageInfo.nextPage();
+ Assert.assertEquals("<< 1 [2] 3 4 >>", navigatePageInfo.toString());
+
+ // 尾页
+ navigatePageInfo.setPageNo(5);
+ Assert.assertEquals("<< 2 3 4 [5]", navigatePageInfo.toString());
+ }
+}
diff --git a/hutool-core/src/test/java/cn/hutool/core/math/PageInfoTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/page/PageInfoTest.java
similarity index 96%
rename from hutool-core/src/test/java/cn/hutool/core/math/PageInfoTest.java
rename to hutool-core/src/test/java/cn/hutool/core/lang/page/PageInfoTest.java
index a5778a98f..eca662cca 100644
--- a/hutool-core/src/test/java/cn/hutool/core/math/PageInfoTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/lang/page/PageInfoTest.java
@@ -1,4 +1,4 @@
-package cn.hutool.core.math;
+package cn.hutool.core.lang.page;
import org.junit.Assert;
import org.junit.Test;
diff --git a/hutool-core/src/test/java/cn/hutool/core/tree/IssueI6NR2ZTest.java b/hutool-core/src/test/java/cn/hutool/core/tree/IssueI6NR2ZTest.java
new file mode 100644
index 000000000..3acbcea4b
--- /dev/null
+++ b/hutool-core/src/test/java/cn/hutool/core/tree/IssueI6NR2ZTest.java
@@ -0,0 +1,48 @@
+package cn.hutool.core.tree;
+
+import cn.hutool.core.lang.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class IssueI6NR2ZTest {
+ @Test
+ public void getNodeTest() {
+ final List> list = new ArrayList<>();
+
+ final TreeNode treeNode1 = new TreeNode<>();
+ treeNode1.setId(1);
+ treeNode1.setParentId(0);
+ list.add(treeNode1);
+
+ final TreeNode treeNode2 = new TreeNode<>();
+ treeNode2.setId(2);
+ treeNode2.setParentId(1);
+ list.add(treeNode2);
+
+ final TreeNode treeNode3 = new TreeNode<>();
+ treeNode3.setId(3);
+ treeNode3.setParentId(1);
+ list.add(treeNode3);
+
+ final TreeNode treeNode4 = new TreeNode<>();
+ treeNode4.setId(21);
+ treeNode4.setParentId(2);
+ list.add(treeNode4);
+
+ final TreeNode treeNode5 = new TreeNode<>();
+ treeNode5.setId(31);
+ treeNode5.setParentId(3);
+ list.add(treeNode5);
+
+ final TreeNode treeNode6 = new TreeNode<>();
+ treeNode6.setId(211);
+ treeNode6.setParentId(21);
+ list.add(treeNode6);
+
+ final List> build = TreeUtil.build(list);
+ final MapTree node = TreeUtil.getNode(build.get(0), 31);
+ Assert.notNull(node);
+ }
+}
diff --git a/hutool-db/src/main/java/cn/hutool/db/Page.java b/hutool-db/src/main/java/cn/hutool/db/Page.java
index 176d7f42d..b5c7b877c 100644
--- a/hutool-db/src/main/java/cn/hutool/db/Page.java
+++ b/hutool-db/src/main/java/cn/hutool/db/Page.java
@@ -1,7 +1,7 @@
package cn.hutool.db;
import cn.hutool.core.lang.Segment;
-import cn.hutool.core.math.PageInfo;
+import cn.hutool.core.lang.page.PageInfo;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.db.sql.Order;
diff --git a/hutool-db/src/main/java/cn/hutool/db/PageResult.java b/hutool-db/src/main/java/cn/hutool/db/PageResult.java
index 70118f2a6..c495f650e 100644
--- a/hutool-db/src/main/java/cn/hutool/db/PageResult.java
+++ b/hutool-db/src/main/java/cn/hutool/db/PageResult.java
@@ -1,6 +1,6 @@
package cn.hutool.db;
-import cn.hutool.core.math.PageInfo;
+import cn.hutool.core.lang.page.PageInfo;
import java.util.ArrayList;