diff options
Diffstat (limited to 'guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java')
-rw-r--r-- | guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java b/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java new file mode 100644 index 0000000..d2d0088 --- /dev/null +++ b/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2011 The Guava Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package com.google.common.collect; + +import javax.annotation.Nullable; + +/** + * A descending wrapper around an {@code ImmutableSortedMultiset} + * + * @author Louis Wasserman + */ +@SuppressWarnings("serial") // uses writeReplace, not default serialization +final class DescendingImmutableSortedMultiset<E> extends ImmutableSortedMultiset<E> { + private final transient ImmutableSortedMultiset<E> forward; + + DescendingImmutableSortedMultiset(ImmutableSortedMultiset<E> forward) { + this.forward = forward; + } + + @Override + public int count(@Nullable Object element) { + return forward.count(element); + } + + @Override + public Entry<E> firstEntry() { + return forward.lastEntry(); + } + + @Override + public Entry<E> lastEntry() { + return forward.firstEntry(); + } + + @Override + public int size() { + return forward.size(); + } + + @Override + public ImmutableSortedSet<E> elementSet() { + return forward.elementSet().descendingSet(); + } + + @Override + ImmutableSet<Entry<E>> createEntrySet() { + final ImmutableSet<Entry<E>> forwardEntrySet = forward.entrySet(); + return new EntrySet() { + @Override + public int size() { + return forwardEntrySet.size(); + } + + @Override + public UnmodifiableIterator<Entry<E>> iterator() { + return asList().iterator(); + } + + @Override + ImmutableList<Entry<E>> createAsList() { + return forwardEntrySet.asList().reverse(); + } + }; + } + + @Override + public ImmutableSortedMultiset<E> descendingMultiset() { + return forward; + } + + @Override + public ImmutableSortedMultiset<E> headMultiset(E upperBound, BoundType boundType) { + return forward.tailMultiset(upperBound, boundType).descendingMultiset(); + } + + @Override + public ImmutableSortedMultiset<E> tailMultiset(E lowerBound, BoundType boundType) { + return forward.headMultiset(lowerBound, boundType).descendingMultiset(); + } + + @Override + boolean isPartialView() { + return forward.isPartialView(); + } +} |