diff --git a/CHANGELOG.md b/CHANGELOG.md index c5fca4b4c..8d44b5d44 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.16.M1 (2023-03-23) +# 5.8.16.M1 (2023-03-26) ### 🐣新特性 * 【core 】 改进Calculator.conversion,兼容乘法符号省略写法(issue#2964@Github) @@ -22,6 +22,7 @@ * 【core 】 修复JSONUtil.toBean可能的空指针问题(issue#2987@Github) * 【core 】 修复CalendarUtil.isSameMonth没有判断公元前导致不一致的问题(issue#3011@Github) * 【core 】 修复WatchUtil createModify maxDepth传递后没有使用问题(issue#3005@Github) +* 【core 】 修复NullComparator反转无效问题(pr#964@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.15 (2023-03-09) diff --git a/hutool-core/src/test/java/cn/hutool/core/comparator/PropertyComparatorTest.java b/hutool-core/src/test/java/cn/hutool/core/comparator/PropertyComparatorTest.java new file mode 100644 index 000000000..352d761f1 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/comparator/PropertyComparatorTest.java @@ -0,0 +1,55 @@ +package cn.hutool.core.comparator; + +import cn.hutool.core.collection.ListUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +public class PropertyComparatorTest { + @Test + public void sortNullTest() { + final ArrayList users = ListUtil.toList( + new User("1", "d"), + new User("2", null), + new User("3", "a") + ); + + // 默认null在末尾 + final List sortedList1 = ListUtil.sort(users, new PropertyComparator<>("b")); + Assert.assertEquals("a", sortedList1.get(0).getB()); + Assert.assertEquals("d", sortedList1.get(1).getB()); + Assert.assertNull(sortedList1.get(2).getB()); + + // null在首 + final List sortedList2 = ListUtil.sort(users, new PropertyComparator<>("b", false)); + Assert.assertNull(sortedList2.get(0).getB()); + Assert.assertEquals("a", sortedList2.get(1).getB()); + Assert.assertEquals("d", sortedList2.get(2).getB()); + } + + @Test + public void reversedTest() { + final ArrayList users = ListUtil.toList( + new User("1", "d"), + new User("2", null), + new User("3", "a") + ); + + // 反序 + final List sortedList = ListUtil.sort(users, new PropertyComparator<>("b").reversed()); + Assert.assertNull(sortedList.get(0).getB()); + Assert.assertEquals("d", sortedList.get(1).getB()); + Assert.assertEquals("a", sortedList.get(2).getB()); + } + + @Data + @AllArgsConstructor + static class User{ + private String a; + private String b; + } +}