Package org.aoju.bus.core.compare
Class CompareChain<E>
java.lang.Object
org.aoju.bus.core.compare.CompareChain<E>
- Type Parameters:
E- 对象泛型
- All Implemented Interfaces:
Serializable,Iterable<Comparator<E>>,Comparator<E>,Chain<Comparator<E>,CompareChain<E>>
public class CompareChain<E>
extends Object
implements Chain<Comparator<E>,CompareChain<E>>, Comparator<E>, Serializable
比较器链 此链包装了多个比较器,最终比较结果按照比较器顺序综合多个比较器结果 按照比较器链的顺序分别比较,如果比较出相等则转向下一个比较器,否则直接返回 此类copy from Apache-commons-collections
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
ConstructorsConstructorDescription构造空的比较器链,必须至少有一个比较器,否则会在compare时抛出UnsupportedOperationExceptionCompareChain(Comparator<E> comparator) 构造,初始化单一比较器 比较器为正序CompareChain(Comparator<E> comparator, boolean reverse) 构造,初始化单一比较器 自定义正序还是反序CompareChain(List<Comparator<E>> list) 构造,使用已有的比较器列表CompareChain(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> CompareChain<E> of(Comparator<E> comparator) 构建CompareChainstatic <E> CompareChain<E> of(Comparator<E>... comparators) 构建CompareChainstatic <E> CompareChain<E> of(Comparator<E> comparator, boolean reverse) 构建CompareChainstatic <E> CompareChain<E> of(List<Comparator<E>> comparators) 构建CompareChainstatic <E> CompareChain<E> of(List<Comparator<E>> comparators, BitSet bits) 构建CompareChainsetComparator(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
-
CompareChain
public CompareChain()构造空的比较器链,必须至少有一个比较器,否则会在compare时抛出UnsupportedOperationException -
CompareChain
构造,初始化单一比较器 比较器为正序- Parameters:
comparator- 在比较器链中的第一个比较器
-
CompareChain
构造,初始化单一比较器 自定义正序还是反序- Parameters:
comparator- 在比较器链中的第一个比较器reverse- 是否反序,true表示反序,false正序
-
CompareChain
-
CompareChain
构造,使用已有的比较器列表和对应的BitSet BitSet中的boolean值需与list中的Comparator一一对应,true表示正序,false反序- Parameters:
list-Comparator列表bits-Comparator列表对应的排序boolean值,true表示正序,false反序
-
-
Method Details
-
of
构建CompareChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparator- 比较器- Returns:
CompareChain
-
of
构建CompareChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparator- 比较器reverse- 是否反向- Returns:
CompareChain
-
of
构建CompareChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparators- 比较器数组- Returns:
CompareChain
-
of
构建CompareChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparators- 比较器列表- Returns:
CompareChain
-
of
构建CompareChain- Type Parameters:
E- 被比较对象类型- Parameters:
comparators- 比较器列表bits-Comparator列表对应的排序boolean值,true表示正序,false反序- Returns:
CompareChain
-
addComparator
在链的尾部添加比较器,使用正向排序- Parameters:
comparator-Comparator比较器,正向- Returns:
- this
-
addComparator
在链的尾部添加比较器,使用给定排序方式- Parameters:
comparator-Comparator比较器reverse- 是否反序,true表示正序,false反序- Returns:
- this
-
setComparator
public CompareChain<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 = CompareChain cannot be modified; false = CompareChain can still be modified.
-
iterator
-
addChain
Description copied from interface:Chain加入责任链- Specified by:
addChainin interfaceChain<Comparator<E>,CompareChain<E>> - Parameters:
element- 责任链新的环节元素- Returns:
- this
-
compare
执行比较 按照比较器链的顺序分别比较,如果比较出相等则转向下一个比较器,否则直接返回- Specified by:
comparein interfaceComparator<E>- Parameters:
o1- 第一个对象o2- 第二个对象- Returns:
- -1, 0, or 1
- Throws:
UnsupportedOperationException- 如果比较器链为空,无法完成比较
-
hashCode
-
equals
-