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); }