diff options
Diffstat (limited to 'guava/src/com/google/common/collect/CompoundOrdering.java')
-rw-r--r-- | guava/src/com/google/common/collect/CompoundOrdering.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/guava/src/com/google/common/collect/CompoundOrdering.java b/guava/src/com/google/common/collect/CompoundOrdering.java index 26ebf54..f669a62 100644 --- a/guava/src/com/google/common/collect/CompoundOrdering.java +++ b/guava/src/com/google/common/collect/CompoundOrdering.java @@ -20,6 +20,7 @@ import com.google.common.annotations.GwtCompatible; import java.io.Serializable; import java.util.Comparator; +import java.util.List; /** An ordering that tries several comparators in order. */ @GwtCompatible(serializable = true) @@ -36,11 +37,15 @@ final class CompoundOrdering<T> extends Ordering<T> implements Serializable { this.comparators = ImmutableList.copyOf(comparators); } + CompoundOrdering(List<? extends Comparator<? super T>> comparators, + Comparator<? super T> lastComparator) { + this.comparators = new ImmutableList.Builder<Comparator<? super T>>() + .addAll(comparators).add(lastComparator).build(); + } + @Override public int compare(T left, T right) { - // Avoid using the Iterator to avoid generating garbage (issue 979). - int size = comparators.size(); - for (int i = 0; i < size; i++) { - int result = comparators.get(i).compare(left, right); + for (Comparator<? super T> comparator : comparators) { + int result = comparator.compare(left, right); if (result != 0) { return result; } |