@GwtCompatible public abstract class ComparisonChain extends Object
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
.
Modifier and Type | Method and Description |
---|---|
ComparisonChain |
compare(Boolean left,
Boolean right)
Deprecated.
Use
compareFalseFirst(boolean, boolean) ; or, if the parameters passed are being either
negated or reversed, undo the negation or reversal and use compareTrueFirst(boolean, boolean) . |
abstract ComparisonChain |
compare(Comparable<?> left,
Comparable<?> right)
Compares two comparable objects as specified by
Comparable.compareTo(T) , if the
result of this comparison chain has not already been determined. |
abstract ComparisonChain |
compare(double left,
double right)
Compares two
double values as specified by Double.compare(double, double) , if the result
of this comparison chain has not already been determined. |
abstract ComparisonChain |
compare(float left,
float right)
Compares two
float values as specified by Float.compare(float, float) , if the result
of this comparison chain has not already been determined. |
abstract ComparisonChain |
compare(int left,
int right)
Compares two
int values as specified by Ints.compare(int, int) , if the result of
this comparison chain has not already been determined. |
abstract ComparisonChain |
compare(long left,
long right)
Compares two
long values as specified by Longs.compare(long, long) , 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 two
boolean values, considering false to be less than true ,
if the result of this comparison chain has not already been determined. |
abstract ComparisonChain |
compareTrueFirst(boolean left,
boolean right)
Compares two
boolean values, considering true to be less than false ,
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.
|
public static ComparisonChain start()
public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right)
Comparable.compareTo(T)
, if the
result of this comparison chain has not already been determined.public abstract <T> ComparisonChain compare(@NullableDecl T left, @NullableDecl T right, Comparator<T> comparator)
public abstract ComparisonChain compare(int left, int right)
int
values as specified by Ints.compare(int, int)
, if the result of
this comparison chain has not already been determined.public abstract ComparisonChain compare(long left, long right)
long
values as specified by Longs.compare(long, long)
, if the result of
this comparison chain has not already been determined.public abstract ComparisonChain compare(float left, float right)
float
values as specified by Float.compare(float, float)
, if the result
of this comparison chain has not already been determined.public abstract ComparisonChain compare(double left, double right)
double
values as specified by Double.compare(double, double)
, if the result
of this comparison chain has not already been determined.@Deprecated public final ComparisonChain compare(Boolean left, Boolean right)
compareFalseFirst(boolean, boolean)
; or, if the parameters passed are being either
negated or reversed, undo the negation or reversal and use compareTrueFirst(boolean, boolean)
.compareFalseFirst(boolean, boolean)
.public abstract ComparisonChain compareTrueFirst(boolean left, boolean right)
boolean
values, considering true
to be less than false
,
if the result of this comparison chain has not already been determined.public abstract ComparisonChain compareFalseFirst(boolean left, boolean right)
boolean
values, considering false
to be less than true
,
if the result of this comparison chain has not already been determined.compare
since 2.0)public abstract int result()
Copyright © 2010–2017. All rights reserved.