From 1e11bd5da56b1422f280f84f6a36c1ef8502913d Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 27 Dec 2022 19:59:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DIndexedComparator=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E6=95=B0=E6=8D=AE=E9=94=99=E4=B9=B1=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=88ExcelWriter=E4=BD=BF=E7=94=A8=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=88=AB=E5=90=8D=E5=AF=BC=E8=87=B4=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../cn/hutool/core/comparator/IndexedComparator.java | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc80e8923..d9cd7d21b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ * 【core 】 修复JSONXMLSerializer将Json转为XML时,遇到嵌套需要递归情况时会丢失contentKeys问题(pr#903@Gitee) * 【db 】 修复使用mariadb通过jdbcurl创建SimpleDataSource报NullPointException(pr#900@Gitee) * 【core 】 修复UrlBuilder中参数中包括"://"判断错误问题(pr#898@Gitee) +* 【core 】 修复IndexedComparator导致的数据错乱问题(ExcelWriter使用部分别名导致字段丢失)(issue#I66Z6B@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/comparator/IndexedComparator.java b/hutool-core/src/main/java/cn/hutool/core/comparator/IndexedComparator.java index 8afd9c996..d54cd3c2f 100644 --- a/hutool-core/src/main/java/cn/hutool/core/comparator/IndexedComparator.java +++ b/hutool-core/src/main/java/cn/hutool/core/comparator/IndexedComparator.java @@ -46,6 +46,16 @@ public class IndexedComparator implements Comparator { final int index1 = getOrder(o1); final int index2 = getOrder(o2); + if (index1 == index2) { + if (index1 < 0 || index1 == this.array.length) { + // 任意一个元素不在列表中, 返回原顺序 + return 1; + } + + // 位置一样,认为是同一个元素 + return 0; + } + return Integer.compare(index1, index2); }