public class CompareUtil extends Object
Constructor and Description |
---|
CompareUtil() |
Modifier and Type | Method and Description |
---|---|
static int |
compare(byte x,
byte y)
比较两个值的大小
|
static int |
compare(char x,
char y)
比较两个值的大小
|
static int |
compare(double x,
double y)
比较两个值的大小
|
static int |
compare(int x,
int y)
比较两个值的大小
|
static int |
compare(long x,
long y)
比较两个值的大小
|
static int |
compare(short x,
short y)
比较两个值的大小
|
static <T extends Comparable<? super T>> |
compare(T c1,
T c2)
null 安全的对象比较,null 对象小于任何对象 |
static <T> int |
compare(T o1,
T o2,
boolean isNullGreater)
自然比较两个对象的大小,比较规则如下:
1、如果实现Comparable调用compareTo比较
2、o1.equals(o2)返回0
3、比较hashCode值
4、比较toString值
|
static <T extends Comparable<? super T>> |
compare(T c1,
T c2,
boolean isNullGreater)
null 安全的对象比较 |
static <T> int |
compare(T c1,
T c2,
Comparator<T> comparator)
对象比较,比较结果取决于comparator,如果被比较对象为null,传入的comparator对象应处理此情况
如果传入comparator为null,则使用默认规则比较(此时被比较对象必须实现Comparable接口) 一般而言,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0 |
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>> |
equals(T c1,
T c2)
null 安全的检查两个对象是否相同,通过调用compare(c1, c2) == 0 完成 |
static <T extends Comparable<? super T>> |
ge(T c1,
T c2)
c1是否大于或等于c2,通过调用
compare(c1, c2) >= 0 完成 |
static <T extends Comparable<? super T>> |
gt(T c1,
T c2)
c1是否大于c2,通过调用
compare(c1, c2) > 0 完成 |
static <T extends Comparable<? super T>> |
isIn(T value,
T c1,
T c2)
给定的
value 是否在c1 和c2 的范围内即 min(c1,c2) <= value <= max(c1,c2) |
static <T extends Comparable<? super T>> |
isInExclusive(T value,
T c1,
T c2)
给定的
value 是否在c1 和c2 的范围内,但是不包括边界即 min(c1,c2) < value < max(c1,c2) |
static <T extends Comparable<? super T>> |
le(T c1,
T c2)
c1是否小于或等于c2,通过调用
compare(c1, c2) <= 0 完成 |
static <T extends Comparable<? super T>> |
lt(T c1,
T c2)
c1是否大小于c2,通过调用
compare(c1, c2) < 0 完成 |
static <T extends Comparable<? super T>> |
max(T t1,
T t2)
取两个值中的最大值,大小相同返回第一个值
|
static <T extends Comparable<? super T>> |
min(T t1,
T t2)
取两个值中的最小值,大小相同返回第一个值
|
static <E extends Comparable<? super E>> |
natural()
获取自然排序器,即默认排序器
如需对null友好操作如下
Comparator.nullsLast(CompareUtil.natural())
Comparator.nullsFirst(CompareUtil.natural())
|
static <E extends Comparable<? super E>> |
naturalReverse()
获取反序排序器,即默认自然排序的反序排序器
如需对null友好操作如下
Comparator.nullsLast(CompareUtil.naturalReverse())
Comparator.nullsFirst(CompareUtil.naturalReverse())
|
static <E extends Comparable<? super E>> |
reverse(Comparator<E> comparator)
获取反序排序器,即默认排序器
如需对null友好操作如下
Comparator.nullsLast(CompareUtil.reverse())
Comparator.nullsFirst(CompareUtil.reverse())
|
public static int compare(char x, char y)
x
- 第一个值y
- 第二个值Character.compare(char, char)
public static int compare(double x, double y)
x
- 第一个值y
- 第二个值Double.compare(double, double)
public static int compare(int x, int y)
x
- 第一个值y
- 第二个值Integer.compare(int, int)
public static int compare(long x, long y)
x
- 第一个值y
- 第二个值Long.compare(long, long)
public static int compare(short x, short y)
x
- 第一个值y
- 第二个值Short.compare(short, short)
public static int compare(byte x, byte y)
x
- 第一个值y
- 第二个值Byte.compare(byte, byte)
public static <E extends Comparable<? super E>> Comparator<E> natural()
Comparator.nullsLast(CompareUtil.natural())
Comparator.nullsFirst(CompareUtil.natural())
E
- 排序节点类型public static <E extends Comparable<? super E>> Comparator<E> naturalReverse()
Comparator.nullsLast(CompareUtil.naturalReverse())
Comparator.nullsFirst(CompareUtil.naturalReverse())
E
- 排序节点类型public static <E extends Comparable<? super E>> Comparator<E> reverse(Comparator<E> comparator)
Comparator.nullsLast(CompareUtil.reverse())
Comparator.nullsFirst(CompareUtil.reverse())
E
- 排序节点类型comparator
- 排序器public static <T> int compare(T c1, T c2, Comparator<T> comparator)
一般而言,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0
T
- 被比较对象类型c1
- 对象1c2
- 对象2comparator
- 比较器Comparator.compare(Object, Object)
public static <T extends Comparable<? super T>> int compare(T c1, T c2)
null
安全的对象比较,null
对象小于任何对象T
- 被比较对象类型c1
- 对象1,可以为null
c2
- 对象2,可以为null
Comparator.compare(Object, Object)
public static <T extends Comparable<? super T>> int compare(T c1, T c2, boolean isNullGreater)
null
安全的对象比较T
- 被比较对象类型(必须实现Comparable接口)c1
- 对象1,可以为null
c2
- 对象2,可以为null
isNullGreater
- 当被比较对象为null时是否排在后面,true表示null大于任何对象,false反之Comparator.compare(Object, Object)
public static <T> int compare(T o1, T o2, boolean isNullGreater)
1、如果实现Comparable调用compareTo比较 2、o1.equals(o2)返回0 3、比较hashCode值 4、比较toString值
T
- 被比较对象类型o1
- 对象1o2
- 对象2isNullGreater
- null值是否做为最大值public static <T> Comparator<T> comparingPinyin(Function<T,String> keyExtractor)
T
- 对象类型keyExtractor
- 从对象中提取中文(参与比较的内容)public static <T> Comparator<T> comparingPinyin(Function<T,String> keyExtractor, boolean reverse)
T
- 对象类型keyExtractor
- 从对象中提取中文(参与比较的内容)reverse
- 是否反序public static <T,U> Comparator<T> comparingIndexed(Function<? super T,? extends U> keyExtractor, U[] objs)
T
- 对象类型U
- 数组对象类型keyExtractor
- 从对象中提取中文(参与比较的内容)objs
- 参与排序的数组,数组的元素位置决定了对象的排序先后public static <T,U> Comparator<T> comparingIndexed(Function<? super T,? extends U> keyExtractor, Iterable<U> objs)
T
- 对象类型U
- 数组对象类型keyExtractor
- 从对象中提取中文(参与比较的内容)objs
- 参与排序的集合对象,数组的元素位置决定了对象的排序先后public static <T,U> Comparator<T> comparingIndexed(Function<? super T,? extends U> keyExtractor, boolean atEndIfMiss, U... objs)
T
- 对象类型U
- 数组对象类型keyExtractor
- 从对象中提取排序键的函数(参与比较的内容)atEndIfMiss
- 如果不在列表中是否排在后边; true:排在后边; false:排在前边objs
- 参与排序的数组,数组的元素位置决定了对象的排序先后, 示例:int[] objs = new int[]{3, 2, 1, 4, 5,6};
public static <T extends Comparable<? super T>> T min(T t1, T t2)
T
- 值类型t1
- 第一个值t2
- 第二个值public static <T extends Comparable<? super T>> T max(T t1, T t2)
T
- 值类型t1
- 第一个值t2
- 第二个值public static <T extends Comparable<? super T>> boolean equals(T c1, T c2)
null
安全的检查两个对象是否相同,通过调用compare(c1, c2) == 0
完成T
- 被比较对象类型c1
- 对象1,可以为null
c2
- 对象2,可以为null
Comparator.compare(Object, Object)
public static <T extends Comparable<? super T>> boolean gt(T c1, T c2)
compare(c1, c2) > 0
完成T
- 被比较对象类型c1
- 对象1,可以为null
c2
- 对象2,可以为null
Comparator.compare(Object, Object)
public static <T extends Comparable<? super T>> boolean ge(T c1, T c2)
compare(c1, c2) >= 0
完成T
- 被比较对象类型c1
- 对象1,可以为null
c2
- 对象2,可以为null
Comparator.compare(Object, Object)
public static <T extends Comparable<? super T>> boolean lt(T c1, T c2)
compare(c1, c2) < 0
完成T
- 被比较对象类型c1
- 对象1,可以为null
c2
- 对象2,可以为null
Comparator.compare(Object, Object)
public static <T extends Comparable<? super T>> boolean le(T c1, T c2)
compare(c1, c2) <= 0
完成T
- 被比较对象类型c1
- 对象1,可以为null
c2
- 对象2,可以为null
Comparator.compare(Object, Object)
public static <T extends Comparable<? super T>> boolean isIn(T value, T c1, T c2)
value
是否在c1
和c2
的范围内min(c1,c2) <= value <= max(c1,c2)
T
- 被比较对象类型value
- 检查的对象,可以为null
c1
- 对象1,可以为null
c2
- 对象2,可以为null
value
是否在c1
和c2
的范围内public static <T extends Comparable<? super T>> boolean isInExclusive(T value, T c1, T c2)
value
是否在c1
和c2
的范围内,但是不包括边界min(c1,c2) < value < max(c1,c2)
T
- 被比较对象类型value
- 检查的对象,可以为null
c1
- 对象1,可以为null
c2
- 对象2,可以为null
Comparator.compare(Object, Object)
Copyright © 2025. All rights reserved.