From ea10e836d4864d6ac5bf914f2513691374884473 Mon Sep 17 00:00:00 2001 From: 721806280 <33091348+721806280@users.noreply.github.com> Date: Fri, 25 Mar 2022 10:53:53 +0800 Subject: [PATCH] :sparkles: add comparingIndexed method to CompareUtil. --- .../hutool/core/comparator/CompareUtil.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/comparator/CompareUtil.java b/hutool-core/src/main/java/cn/hutool/core/comparator/CompareUtil.java index d91516a09..1fb965958 100644 --- a/hutool-core/src/main/java/cn/hutool/core/comparator/CompareUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/comparator/CompareUtil.java @@ -152,4 +152,35 @@ public class CompareUtil { } return (o1, o2) -> pinyinComparator.compare(keyExtractor.apply(o1), keyExtractor.apply(o2)); } + + /** + * 索引比较器 + * + * @param keyExtractor 从对象中提取中文(参与比较的内容) + * @param objs 参与排序的数组,数组的元素位置决定了对象的排序先后 + * @param 对象类型 + * @param 数组对象类型 + * @return 索引比较器 + * @since 5.8.0 + */ + public static Comparator comparingIndexed(Function keyExtractor, U... objs) { + return comparingIndexed(keyExtractor, false, objs); + } + + /** + * 索引比较器 + * + * @param keyExtractor 从对象中提取排序键的函数(参与比较的内容) + * @param atEndIfMiss 如果不在列表中是否排在后边 + * @param objs 参与排序的数组,数组的元素位置决定了对象的排序先后 + * @param 对象类型 + * @param 数组对象类型 + * @return 索引比较器 + * @since 5.8.0 + */ + public static Comparator comparingIndexed(Function keyExtractor, boolean atEndIfMiss, U... objs) { + Objects.requireNonNull(keyExtractor); + IndexedComparator indexedComparator = new IndexedComparator<>(atEndIfMiss, objs); + return (o1, o2) -> indexedComparator.compare(keyExtractor.apply(o1), keyExtractor.apply(o2)); + } }