mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
add sort
This commit is contained in:
@@ -11,6 +11,18 @@ import java.util.function.Function;
|
||||
*/
|
||||
public class CompareUtil {
|
||||
|
||||
/**
|
||||
* 获取自然排序器,即默认排序器
|
||||
*
|
||||
* @param <E> 排序节点类型
|
||||
* @return 默认排序器
|
||||
* @since 5.7.21
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <E extends Comparable<? super E>> Comparator<E> naturalComparator() {
|
||||
return ComparableComparator.INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对象比较,比较结果取决于comparator,如果被比较对象为null,传入的comparator对象应处理此情况<br>
|
||||
* 如果传入comparator为null,则使用默认规则比较(此时被比较对象必须实现Comparable接口)
|
||||
|
73
hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveTreeMap.java
Executable file
73
hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveTreeMap.java
Executable file
@@ -0,0 +1,73 @@
|
||||
package cn.hutool.core.map;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* 忽略大小写的{@link TreeMap}<br>
|
||||
* 对KEY忽略大小写,get("Value")和get("value")获得的值相同,put进入的值也会被覆盖
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
* @since 3.3.1
|
||||
*/
|
||||
public class CaseInsensitiveTreeMap<K, V> extends CustomKeyMap<K, V> {
|
||||
private static final long serialVersionUID = 4043263744224569870L;
|
||||
|
||||
// ------------------------------------------------------------------------- Constructor start
|
||||
/**
|
||||
* 构造
|
||||
*/
|
||||
public CaseInsensitiveTreeMap() {
|
||||
this((Comparator<? super K>) null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param m Map
|
||||
* @since 3.1.2
|
||||
*/
|
||||
public CaseInsensitiveTreeMap(Map<? extends K, ? extends V> m) {
|
||||
this();
|
||||
this.putAll(m);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param m Map
|
||||
* @since 3.1.2
|
||||
*/
|
||||
public CaseInsensitiveTreeMap(SortedMap<? extends K, ? extends V> m) {
|
||||
super(new TreeMap<K, V>(m));
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param comparator 比较器,{@code null}表示使用默认比较器
|
||||
*/
|
||||
public CaseInsensitiveTreeMap(Comparator<? super K> comparator) {
|
||||
super(new TreeMap<>(comparator));
|
||||
}
|
||||
// ------------------------------------------------------------------------- Constructor end
|
||||
|
||||
/**
|
||||
* 将Key转为小写
|
||||
*
|
||||
* @param key KEY
|
||||
* @return 小写KEY
|
||||
*/
|
||||
@Override
|
||||
protected Object customKey(Object key) {
|
||||
if (key instanceof CharSequence) {
|
||||
key = key.toString().toLowerCase();
|
||||
}
|
||||
return key;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user