This commit is contained in:
Looly
2022-02-13 22:51:58 +08:00
parent 0189de2dad
commit 0344982767
9 changed files with 172 additions and 8 deletions

View File

@@ -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接口

View 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;
}
}