Package com.google.common.collect
Class ComparisonChain
java.lang.Object
com.google.common.collect.ComparisonChain
A utility for performing a chained comparison statement. For example:
public int compareTo(Foo that) {
return ComparisonChain.start()
.compare(this.aString, that.aString)
.compare(this.anInt, that.anInt)
.compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())
.result();
}
The value of this expression will have the same sign as the first nonzero comparison result in the chain, or will be zero if every comparison result was zero.
Note: ComparisonChain
instances are immutable. For
this utility to work correctly, calls must be chained as illustrated above.
Performance note: Even though the ComparisonChain
caller always
invokes its compare
methods unconditionally, the
ComparisonChain
implementation stops calling its inputs' compareTo
and compare
methods as soon as one of them returns a nonzero result. This optimization is
typically important only in the presence of expensive compareTo
and
compare
implementations.
See the Guava User Guide article on
ComparisonChain
.
- Since:
- 2.0
-
Method Summary
Modifier and TypeMethodDescriptionabstract ComparisonChain
compare
(double left, double right) Compares twodouble
values as specified byDouble.compare(double, double)
, if the result of this comparison chain has not already been determined.abstract ComparisonChain
compare
(float left, float right) Compares twofloat
values as specified byFloat.compare(float, float)
, if the result of this comparison chain has not already been determined.abstract ComparisonChain
compare
(int left, int right) Compares twoint
values as specified byInts.compare(int, int)
, if the result of this comparison chain has not already been determined.abstract ComparisonChain
compare
(long left, long right) Compares twolong
values as specified byLongs.compare(long, long)
, if the result of this comparison chain has not already been determined.final ComparisonChain
Deprecated.abstract ComparisonChain
compare
(Comparable<?> left, Comparable<?> right) Compares two comparable objects as specified byComparable.compareTo(T)
, if the result of this comparison chain has not already been determined.abstract <T> ComparisonChain
compare
(T left, T right, Comparator<T> comparator) Compares two objects using a comparator, if the result of this comparison chain has not already been determined.abstract ComparisonChain
compareFalseFirst
(boolean left, boolean right) Compares twoboolean
values, consideringfalse
to be less thantrue
, if the result of this comparison chain has not already been determined.abstract ComparisonChain
compareTrueFirst
(boolean left, boolean right) Compares twoboolean
values, consideringtrue
to be less thanfalse
, if the result of this comparison chain has not already been determined.abstract int
result()
Ends this comparison chain and returns its result: a value having the same sign as the first nonzero comparison result in the chain, or zero if every result was zero.static ComparisonChain
start()
Begins a new chained comparison statement.
-
Method Details
-
start
Begins a new chained comparison statement. See example in the class documentation. -
compare
Compares two comparable objects as specified byComparable.compareTo(T)
, if the result of this comparison chain has not already been determined. -
compare
public abstract <T> ComparisonChain compare(@Nullable T left, @Nullable T right, Comparator<T> comparator) Compares two objects using a comparator, if the result of this comparison chain has not already been determined. -
compare
Compares twoint
values as specified byInts.compare(int, int)
, if the result of this comparison chain has not already been determined. -
compare
Compares twolong
values as specified byLongs.compare(long, long)
, if the result of this comparison chain has not already been determined. -
compare
Compares twofloat
values as specified byFloat.compare(float, float)
, if the result of this comparison chain has not already been determined. -
compare
Compares twodouble
values as specified byDouble.compare(double, double)
, if the result of this comparison chain has not already been determined. -
compare
Deprecated.UsecompareFalseFirst(boolean, boolean)
; or, if the parameters passed are being either negated or reversed, undo the negation or reversal and usecompareTrueFirst(boolean, boolean)
.Discouraged synonym forcompareFalseFirst(boolean, boolean)
.- Since:
- 19.0
-
compareTrueFirst
Compares twoboolean
values, consideringtrue
to be less thanfalse
, if the result of this comparison chain has not already been determined.- Since:
- 12.0
-
compareFalseFirst
Compares twoboolean
values, consideringfalse
to be less thantrue
, if the result of this comparison chain has not already been determined.- Since:
- 12.0 (present as
compare
since 2.0)
-
result
public abstract int result()Ends this comparison chain and returns its result: a value having the same sign as the first nonzero comparison result in the chain, or zero if every result was zero.
-
compareFalseFirst(boolean, boolean)
; or, if the parameters passed are being either negated or reversed, undo the negation or reversal and usecompareTrueFirst(boolean, boolean)
.