Package com.google.common.collect
Class ComparisonChain
- java.lang.Object
-
- com.google.common.collect.ComparisonChain
-
@GwtCompatible public abstract class ComparisonChain extends java.lang.Object
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.
Performance note: Even though the
ComparisonChain
caller always invokes itscompare
methods unconditionally, theComparisonChain
implementation stops calling its inputs'compareTo
andcompare
methods as soon as one of them returns a nonzero result. This optimization is typically important only in the presence of expensivecompareTo
andcompare
implementations.See the Guava User Guide article on
ComparisonChain
.- Since:
- 2.0
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract 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.abstract ComparisonChain
compare(java.lang.Comparable<?> left, java.lang.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, java.util.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 Detail
-
start
public static ComparisonChain start()
Begins a new chained comparison statement. See example in the class documentation.
-
compare
public abstract ComparisonChain compare(java.lang.Comparable<?> left, java.lang.Comparable<?> right)
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, java.util.Comparator<T> comparator)
Compares two objects using a comparator, if the result of this comparison chain has not already been determined.
-
compare
public 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.
-
compare
public 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.
-
compare
public 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.
-
compare
public abstract 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.
-
compareTrueFirst
public 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.- Since:
- 12.0
-
compareFalseFirst
public 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.- 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.
-
-