From 1dab5a70fc24870e333c3cee1b9b1d0ea8ed25ba Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 9 May 2024 10:13:19 +0800 Subject: [PATCH] =?UTF-8?q?PropertyComparator=E5=A2=9E=E5=8A=A0compareSelf?= =?UTF-8?q?=E6=9E=84=E9=80=A0=E9=87=8D=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../core/comparator/PropertyComparator.java | 20 +++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ffba8a9c..be17681eb 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.28(2024-05-08) +# 5.8.28(2024-05-09) ### 🐣新特性 * 【core 】 修正XmlUtil的omitXmlDeclaration描述注释(issue#I9CPC7@Gitee) @@ -16,6 +16,7 @@ * 【captcha】 HttpDownloader.downloadBytes增加超时参数重载(issue#3556@Github) * 【http 】 增加ExceptionFilter和DefaultExceptionFilter支持异常处理(issue#3568@Github) * 【poi 】 增加ExcelWriter.addIgnoredErrors,支持忽略警告小标 +* 【core 】 PropertyComparator增加compareSelf构造重载(issue#3569@Github) ### 🐞Bug修复 * 【http 】 修复HttpUtil.urlWithFormUrlEncoded方法重复编码问题(issue#3536@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/comparator/PropertyComparator.java b/hutool-core/src/main/java/cn/hutool/core/comparator/PropertyComparator.java index c94ced29e..af8853710 100644 --- a/hutool-core/src/main/java/cn/hutool/core/comparator/PropertyComparator.java +++ b/hutool-core/src/main/java/cn/hutool/core/comparator/PropertyComparator.java @@ -6,9 +6,8 @@ import cn.hutool.core.bean.BeanUtil; * Bean属性排序器
* 支持读取Bean多层次下的属性 * - * @author Looly - * * @param 被比较的Bean + * @author Looly */ public class PropertyComparator extends FuncComparator { private static final long serialVersionUID = 9157326766723846313L; @@ -25,10 +24,23 @@ public class PropertyComparator extends FuncComparator { /** * 构造 * - * @param property 属性名 + * @param property 属性名 * @param isNullGreater null值是否排在后(从小到大排序) */ public PropertyComparator(String property, boolean isNullGreater) { - super(isNullGreater, (bean)-> BeanUtil.getProperty(bean, property)); + this(property, true, isNullGreater); + } + + /** + * 构造 + * + * @param property 属性名 + * @param compareSelf 在字段值相同情况下,是否比较对象本身。 + * 如果此项为{@code false},字段值比较后为0会导致对象被认为相同,可能导致被去重。 + * @param isNullGreater null值是否排在后(从小到大排序) + * @since 5.8.28 + */ + public PropertyComparator(String property, final boolean compareSelf, boolean isNullGreater) { + super(isNullGreater, compareSelf, (bean) -> BeanUtil.getProperty(bean, property)); } }