Package org.miaixz.bus.core.xyz
Class CompareKit
java.lang.Object
org.miaixz.bus.core.xyz.CompareKit
比较工具类
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic intcompare(byte x, byte y) 比较两个值的大小static intcompare(char x, char y) 比较两个值的大小static intcompare(double x, double y) 比较两个值的大小static intcompare(int x, int y) 比较两个值的大小static intcompare(long x, long y) 比较两个值的大小static intcompare(short x, short y) 比较两个值的大小static <T extends Comparable<? super T>>
intcompare(T c1, T c2) null安全的对象比较,null对象小于任何对象static <T extends Comparable<? super T>>
intcompare(T c1, T c2, boolean isNullGreater) null安全的对象比较static <T> intcompare(T c1, T c2, Comparator<T> comparator) 对象比较,比较结果取决于comparator,如果被比较对象为null,传入的comparator对象应处理此情况 如果传入comparator为null,则使用默认规则比较(此时被比较对象必须实现Comparable接口)static <T,U> Comparator <T> comparingIndexed(Function<? super T, ? extends U> keyExtractor, boolean atEndIfMiss, U... objs) 索引比较器 通过keyExtractor函数,提取对象的某个属性或规则,根据提供的排序数组,完成比较static <T,U> Comparator <T> comparingIndexed(Function<? super T, ? extends U> keyExtractor, Iterable<U> objs) 索引比较器 通过keyExtractor函数,提取对象的某个属性或规则,根据提供的排序数组,完成比较 objs中缺失的,默认排序在前面(atEndIfMiss=false)static <T,U> Comparator <T> comparingIndexed(Function<? super T, ? extends U> keyExtractor, U[] objs) 索引比较器 通过keyExtractor函数,提取对象的某个属性或规则,根据提供的排序数组,完成比较 objs中缺失的,默认排序在前面(atEndIfMiss=false)static <T> Comparator<T> comparingPinyin(Function<T, String> keyExtractor) 中文比较器static <T> Comparator<T> comparingPinyin(Function<T, String> keyExtractor, boolean reverse) 中文(拼音)比较器static <T extends Comparable<? super T>>
booleanequals(T c1, T c2) null安全的检查两个对象是否相同,通过调用compare(c1, c2) == 0完成static <T extends Comparable<? super T>>
booleange(T c1, T c2) c1是否大于或等于c2,通过调用compare(c1, c2) >= 0完成static <T extends Comparable<? super T>>
booleangt(T c1, T c2) c1是否大于c2,通过调用compare(c1, c2) > 0完成static <T extends Comparable<? super T>>
booleanisIn(T value, T c1, T c2) 给定的value是否在c1和c2的范围内 即min(c1,c2) <= value <= max(c1,c2)static <T extends Comparable<? super T>>
booleanisInExclusive(T value, T c1, T c2) 给定的value是否在c1和c2的范围内,但是不包括边界 即min(c1,c2) < value < max(c1,c2)static <T extends Comparable<? super T>>
booleanle(T c1, T c2) c1是否小于或等于c2,通过调用compare(c1, c2) <= 0完成static <T extends Comparable<? super T>>
booleanlt(T c1, T c2) c1是否大小于c2,通过调用compare(c1, c2) < 0完成static <T extends Comparable<? super T>>
Tmax(T t1, T t2) 取两个值中的最大值,大小相同返回第一个值static <T extends Comparable<? super T>>
Tmin(T t1, T t2) 取两个值中的最小值,大小相同返回第一个值static <E extends Comparable<? super E>>
Comparator<E> natural()获取自然排序器,即默认排序器 如需对null友好操作如下Comparator.nullsLast(CompareKit.natural())Comparator.nullsFirst(CompareKit.natural())static <E extends Comparable<? super E>>
Comparator<E> 获取反序排序器,即默认自然排序的反序排序器 如需对null友好操作如下Comparator.nullsLast(CompareKit.naturalReverse())Comparator.nullsFirst(CompareKit.naturalReverse())static <E extends Comparable<? super E>>
Comparator<E> reverse(Comparator<E> comparator) 获取反序排序器,即默认排序器 如需对null友好操作如下Comparator.nullsLast(CompareKit.reverse())Comparator.nullsFirst(CompareKit.reverse())
-
Constructor Details
-
CompareKit
public CompareKit()
-
-
Method Details
-
compare
public static int compare(char x, char y) 比较两个值的大小- Parameters:
x- 第一个值y- 第二个值- Returns:
- x==y返回0,x<y返回小于0的数,x>y返回大于0的数
- See Also:
-
compare
public static int compare(double x, double y) 比较两个值的大小- Parameters:
x- 第一个值y- 第二个值- Returns:
- x==y返回0,x<y返回小于0的数,x>y返回大于0的数
- See Also:
-
compare
public static int compare(int x, int y) 比较两个值的大小- Parameters:
x- 第一个值y- 第二个值- Returns:
- x==y返回0,x<y返回小于0的数,x>y返回大于0的数
- See Also:
-
compare
public static int compare(long x, long y) 比较两个值的大小- Parameters:
x- 第一个值y- 第二个值- Returns:
- x==y返回0,x<y返回小于0的数,x>y返回大于0的数
- See Also:
-
compare
public static int compare(short x, short y) 比较两个值的大小- Parameters:
x- 第一个值y- 第二个值- Returns:
- x==y返回0,x<y返回小于0的数,x>y返回大于0的数
- See Also:
-
compare
public static int compare(byte x, byte y) 比较两个值的大小- Parameters:
x- 第一个值y- 第二个值- Returns:
- x==y返回0,x<y返回-1,x>y返回1
- See Also:
-
natural
获取自然排序器,即默认排序器- 如需对null友好操作如下
Comparator.nullsLast(CompareKit.natural())Comparator.nullsFirst(CompareKit.natural())
- Type Parameters:
E- 排序节点类型- Returns:
- 默认排序器
-
naturalReverse
获取反序排序器,即默认自然排序的反序排序器- 如需对null友好操作如下
Comparator.nullsLast(CompareKit.naturalReverse())Comparator.nullsFirst(CompareKit.naturalReverse())
- Type Parameters:
E- 排序节点类型- Returns:
- 默认排序器
-
reverse
获取反序排序器,即默认排序器- 如需对null友好操作如下
Comparator.nullsLast(CompareKit.reverse())Comparator.nullsFirst(CompareKit.reverse())
- Type Parameters:
E- 排序节点类型- Parameters:
comparator- 排序器- Returns:
- 默认排序器
-
compare
对象比较,比较结果取决于comparator,如果被比较对象为null,传入的comparator对象应处理此情况 如果传入comparator为null,则使用默认规则比较(此时被比较对象必须实现Comparable接口)一般而言,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0
- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1c2- 对象2comparator- 比较器- Returns:
- 比较结果
- See Also:
-
compare
null安全的对象比较,null对象小于任何对象- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- 比较结果,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0
- See Also:
-
compare
null安全的对象比较- Type Parameters:
T- 被比较对象类型(必须实现Comparable接口)- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为nullisNullGreater- 当被比较对象为null时是否排在后面,true表示null大于任何对象,false反之- Returns:
- 比较结果,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0
- See Also:
-
compare
public static <T> int compare(T o1, T o2, boolean isNullGreater) 自然比较两个对象的大小,比较规则如下:1、如果实现Comparable调用compareTo比较 2、o1.equals(o2)返回0 3、比较hashCode值 4、比较toString值
- Type Parameters:
T- 被比较对象类型- Parameters:
o1- 对象1o2- 对象2isNullGreater- null值是否做为最大值- Returns:
- 比较结果,如果o1 < o2,返回数小于0,o1==o2返回0,o1 > o2 大于0
-
comparingPinyin
中文比较器- Type Parameters:
T- 对象类型- Parameters:
keyExtractor- 从对象中提取中文(参与比较的内容)- Returns:
- 中文比较器
-
comparingPinyin
中文(拼音)比较器- Type Parameters:
T- 对象类型- Parameters:
keyExtractor- 从对象中提取中文(参与比较的内容)reverse- 是否反序- Returns:
- 中文比较器
-
comparingIndexed
public static <T,U> Comparator<T> comparingIndexed(Function<? super T, ? extends U> keyExtractor, U[] objs) 索引比较器 通过keyExtractor函数,提取对象的某个属性或规则,根据提供的排序数组,完成比较 objs中缺失的,默认排序在前面(atEndIfMiss=false)- Type Parameters:
T- 对象类型U- 数组对象类型- Parameters:
keyExtractor- 从对象中提取中文(参与比较的内容)objs- 参与排序的数组,数组的元素位置决定了对象的排序先后- Returns:
- 索引比较器
-
comparingIndexed
public static <T,U> Comparator<T> comparingIndexed(Function<? super T, ? extends U> keyExtractor, Iterable<U> objs) 索引比较器 通过keyExtractor函数,提取对象的某个属性或规则,根据提供的排序数组,完成比较 objs中缺失的,默认排序在前面(atEndIfMiss=false)- Type Parameters:
T- 对象类型U- 数组对象类型- Parameters:
keyExtractor- 从对象中提取中文(参与比较的内容)objs- 参与排序的集合对象,数组的元素位置决定了对象的排序先后- Returns:
- 索引比较器
-
comparingIndexed
public static <T,U> Comparator<T> comparingIndexed(Function<? super T, ? extends U> keyExtractor, boolean atEndIfMiss, U... objs) 索引比较器 通过keyExtractor函数,提取对象的某个属性或规则,根据提供的排序数组,完成比较- Type Parameters:
T- 对象类型U- 数组对象类型- Parameters:
keyExtractor- 从对象中提取排序键的函数(参与比较的内容)atEndIfMiss- 如果不在列表中是否排在后边; true:排在后边; false:排在前边objs- 参与排序的数组,数组的元素位置决定了对象的排序先后, 示例:int[] objs = new int[]{3, 2, 1, 4, 5,6};- Returns:
- 索引比较器
-
min
取两个值中的最小值,大小相同返回第一个值- Type Parameters:
T- 值类型- Parameters:
t1- 第一个值t2- 第二个值- Returns:
- 最小值
-
max
取两个值中的最大值,大小相同返回第一个值- Type Parameters:
T- 值类型- Parameters:
t1- 第一个值t2- 第二个值- Returns:
- 最大值
-
equals
null安全的检查两个对象是否相同,通过调用compare(c1, c2) == 0完成- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- 是否相等
- See Also:
-
gt
c1是否大于c2,通过调用compare(c1, c2) > 0完成- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- c1是否大于c2
- See Also:
-
ge
c1是否大于或等于c2,通过调用compare(c1, c2) >= 0完成- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- c1是否大于或等于c2
- See Also:
-
lt
c1是否大小于c2,通过调用compare(c1, c2) < 0完成- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- c1是否小于c2
- See Also:
-
le
c1是否小于或等于c2,通过调用compare(c1, c2) <= 0完成- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- c1是否小于或等于c2
- See Also:
-
isIn
给定的value是否在c1和c2的范围内 即min(c1,c2) <= value <= max(c1,c2)- Type Parameters:
T- 被比较对象类型- Parameters:
value- 检查的对象,可以为nullc1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- 给定的
value是否在c1和c2的范围内
-
isInExclusive
给定的value是否在c1和c2的范围内,但是不包括边界 即min(c1,c2) < value < max(c1,c2)- Type Parameters:
T- 被比较对象类型- Parameters:
value- 检查的对象,可以为nullc1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- c1是否小于或等于c2
- See Also:
-