diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/SortUtils.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/SortUtils.java new file mode 100644 index 000000000..8ed129c94 --- /dev/null +++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/SortUtils.java @@ -0,0 +1,44 @@ +package cn.stylefeng.roses.kernel.rule.util; + +import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.roses.kernel.rule.util.sort.GetSortKey; + +import java.util.LinkedList; +import java.util.List; + +/** + * 排序工具类 + *

+ * 一般用来弥补数据库排序功能不足的情况 + * + * @author fengshuonan + * @since 2023/8/3 14:43 + */ +public class SortUtils { + + /** + * 对list进行排序,以keys数组传的顺序为准 + * + * @author fengshuonan + * @since 2023/8/3 14:44 + */ + public static List sortListByObjectKey(List originList, List keys) { + + if (ObjectUtil.isEmpty(originList) || ObjectUtil.isEmpty(keys)) { + return originList; + } + + List newSortList = new LinkedList<>(); + for (Object key : keys) { + for (T listItem : originList) { + Object sortKey = listItem.getSortKey(); + if (ObjectUtil.equal(key, sortKey)) { + newSortList.add(listItem); + } + } + } + + return newSortList; + } + +} diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/sort/GetSortKey.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/sort/GetSortKey.java new file mode 100644 index 000000000..d1e3621a9 --- /dev/null +++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/sort/GetSortKey.java @@ -0,0 +1,19 @@ +package cn.stylefeng.roses.kernel.rule.util.sort; + +/** + * 获取排序的key + * + * @author fengshuonan + * @since 2023/8/3 14:42 + */ +public interface GetSortKey { + + /** + * 获取对象中被排序的Key + * + * @author fengshuonan + * @since 2023/8/3 14:42 + */ + Object getSortKey(); + +}