Package org.miaixz.bus.core.compare
Class ComparatorChain<E>
java.lang.Object
org.miaixz.bus.core.compare.ComparatorChain<E>
- Type Parameters:
E- 被比较的对象
- All Implemented Interfaces:
Serializable,Iterable<Comparator<E>>,Comparator<E>,Chain<Comparator<E>,ComparatorChain<E>>
public class ComparatorChain<E>
extends Object
implements Chain<Comparator<E>,ComparatorChain<E>>, Comparator<E>, Serializable
比较器链。此链包装了多个比较器,最终比较结果按照比较器顺序综合多个比较器结果
按照比较器链的顺序分别比较,如果比较出相等则转向下一个比较器,否则直接返回
此类copy from Apache-commons-collections
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
ConstructorsConstructorDescription构造空的比较器链,必须至少有一个比较器,否则会在compare时抛出UnsupportedOperationExceptionComparatorChain(Comparator<E> comparator) 构造,初始化单一比较器。比较器为正序ComparatorChain(Comparator<E> comparator, boolean reverse) 构造,初始化单一比较器。自定义正序还是反序ComparatorChain(List<Comparator<E>> list) 构造,使用已有的比较器列表ComparatorChain(List<Comparator<E>> list, BitSet bits) 构造,使用已有的比较器列表和对应的BitSet BitSet中的boolean值需与list中的Comparator一一对应,true表示正序,false反序 -
Method Summary
Modifier and TypeMethodDescriptionaddChain(Comparator<E> element) 加入责任链addComparator(Comparator<E> comparator) 在链的尾部添加比较器,使用正向排序addComparator(Comparator<E> comparator, boolean reverse) 在链的尾部添加比较器,使用给定排序方式int执行比较 按照比较器链的顺序分别比较,如果比较出相等则转向下一个比较器,否则直接返回booleaninthashCode()booleanisLocked()是否已经被锁定。当开始比较时(调用compare方法)此值为trueiterator()static <E> ComparatorChain<E> of(Comparator<E> comparator) 构建ComparatorChainstatic <E> ComparatorChain<E> of(Comparator<E>... comparators) 构建ComparatorChainstatic <E> ComparatorChain<E> of(Comparator<E> comparator, boolean reverse) 构建ComparatorChainstatic <E> ComparatorChain<E> of(List<Comparator<E>> comparators) 构建ComparatorChainstatic <E> ComparatorChain<E> of(List<Comparator<E>> comparators, BitSet bits) 构建ComparatorChainsetComparator(int index, Comparator<E> comparator) 替换指定位置的比较器,保持原排序方式setComparator(int index, Comparator<E> comparator, boolean reverse) 替换指定位置的比较器,替换指定排序方式setForwardSort(int index) 更改指定位置的排序方式为正序setReverseSort(int index) 更改指定位置的排序方式为反序intsize()比较器链中比较器个数Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLongMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
ComparatorChain
public ComparatorChain()构造空的比较器链,必须至少有一个比较器,否则会在compare时抛出UnsupportedOperationException -
ComparatorChain
构造,初始化单一比较器。比较器为正序- Parameters:
comparator- 在比较器链中的第一个比较器
-
ComparatorChain
构造,初始化单一比较器。自定义正序还是反序- Parameters:
comparator- 在比较器链中的第一个比较器reverse- 是否反序,true表示反序,false正序
-
ComparatorChain
构造,使用已有的比较器列表- Parameters:
list- 比较器列表- See Also:
-
ComparatorChain
构造,使用已有的比较器列表和对应的BitSet BitSet中的boolean值需与list中的Comparator一一对应,true表示正序,false反序- Parameters:
list-Comparator列表bits-Comparator列表对应的排序boolean值,true表示正序,false反序
-
-
Method Details
-
of
构建ComparatorChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparator- 比较器- Returns:
ComparatorChain
-
of
构建ComparatorChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparator- 比较器reverse- 是否反向- Returns:
ComparatorChain
-
of
构建ComparatorChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparators- 比较器数组- Returns:
ComparatorChain
-
of
构建ComparatorChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparators- 比较器列表- Returns:
ComparatorChain
-
of
构建ComparatorChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparators- 比较器列表bits-Comparator列表对应的排序boolean值,true表示正序,false反序- Returns:
ComparatorChain
-
addComparator
在链的尾部添加比较器,使用正向排序- Parameters:
comparator-Comparator比较器,正向- Returns:
- this
-
addComparator
在链的尾部添加比较器,使用给定排序方式- Parameters:
comparator-Comparator比较器reverse- 是否反序,true表示正序,false反序- Returns:
- this
-
setComparator
public ComparatorChain<E> setComparator(int index, Comparator<E> comparator) throws IndexOutOfBoundsException 替换指定位置的比较器,保持原排序方式- Parameters:
index- 位置comparator-Comparator- Returns:
- this
- Throws:
IndexOutOfBoundsException- if index < 0 or index >= size()
-
setComparator
替换指定位置的比较器,替换指定排序方式- Parameters:
index- 位置comparator-Comparatorreverse- 是否反序,true表示正序,false反序- Returns:
- this
-
setForwardSort
更改指定位置的排序方式为正序- Parameters:
index- 位置- Returns:
- this
-
setReverseSort
更改指定位置的排序方式为反序- Parameters:
index- 位置- Returns:
- this
-
size
public int size()比较器链中比较器个数- Returns:
- Comparator count
-
isLocked
public boolean isLocked()是否已经被锁定。当开始比较时(调用compare方法)此值为true- Returns:
- true = ComparatorChain cannot be modified; false = ComparatorChain can still be modified.
-
iterator
-
addChain
Description copied from interface:Chain加入责任链- Specified by:
addChainin interfaceChain<Comparator<E>,ComparatorChain<E>> - Parameters:
element- 责任链新的环节元素- Returns:
- this
-
compare
执行比较 按照比较器链的顺序分别比较,如果比较出相等则转向下一个比较器,否则直接返回- Specified by:
comparein interfaceComparator<E>- Parameters:
o1- 第一个对象o2- 第二个对象- Returns:
- -1, 0, or 1
- Throws:
UnsupportedOperationException- 如果比较器链为空,无法完成比较
-
hashCode
public int hashCode() -
equals
- Specified by:
equalsin interfaceComparator<E>- Overrides:
equalsin classObject
-