Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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 static com.google.common.base.Preconditions.checkNotNull;
 
 
 
This class provides a skeletal implementation of the SortedMultiset interface.

The com.google.common.collect.AbstractMultiset.count(java.lang.Object) and com.google.common.collect.AbstractMultiset.size() implementations all iterate across the set returned by com.google.common.collect.Multiset.entrySet(), as do many methods acting on the set returned by elementSet(). Override those methods for better performance.

Author(s):
Louis Wasserman
 
 @GwtCompatible(emulated = true)
 abstract class AbstractSortedMultiset<E> extends AbstractMultiset<E> implements SortedMultiset<E> {
   @GwtTransient final Comparator<? super E> comparator;
 
   // needed for serialization
   @SuppressWarnings("unchecked")
     this((Comparator) Ordering.natural());
   }
 
   AbstractSortedMultiset(Comparator<? super E> comparator) {
     this. = checkNotNull(comparator);
   }
 
   @Override
   public SortedSet<E> elementSet() {
     return (SortedSet<E>) super.elementSet();
   }
 
   @Override
     return new SortedMultisets.ElementSet<E>(this);
   }
 
   @Override
   public Comparator<? super E> comparator() {
     return ;
   }
 
   @Override
   public Entry<E> firstEntry() {
     Iterator<Entry<E>> entryIterator = entryIterator();
     return entryIterator.hasNext() ? entryIterator.next() : null;
   }
 
   @Override
   public Entry<E> lastEntry() {
     Iterator<Entry<E>> entryIterator = descendingEntryIterator();
     return entryIterator.hasNext() ? entryIterator.next() : null;
   }
 
   @Override
   public Entry<E> pollFirstEntry() {
     Iterator<Entry<E>> entryIterator = entryIterator();
     if (entryIterator.hasNext()) {
       Entry<E> result = entryIterator.next();
       result = Multisets.immutableEntry(result.getElement(), result.getCount());
       entryIterator.remove();
       return result;
     }
     return null;
   }
 
   @Override
   public Entry<E> pollLastEntry() {
     Iterator<Entry<E>> entryIterator = descendingEntryIterator();
     if (entryIterator.hasNext()) {
       Entry<E> result = entryIterator.next();
       result = Multisets.immutableEntry(result.getElement(), result.getCount());
       entryIterator.remove();
       return result;
     }
     return null;
   }
  public SortedMultiset<E> subMultiset(@Nullable E fromElementBoundType fromBoundType,
      @Nullable E toElementBoundType toBoundType) {
    // These are checked elsewhere, but NullPointerTester wants them checked eagerly.
    checkNotNull(fromBoundType);
    checkNotNull(toBoundType);
    return tailMultiset(fromElementfromBoundType).headMultiset(toElementtoBoundType);
  }
    return Multisets.iteratorImpl(descendingMultiset());
  }
  private transient SortedMultiset<E> descendingMultiset;
    SortedMultiset<E> result = ;
    return (result == null) ?  = createDescendingMultiset() : result;
  }
    return new DescendingMultiset<E>() {
      @Override
      SortedMultiset<E> forwardMultiset() {
        return AbstractSortedMultiset.this;
      }
      @Override
      Iterator<Entry<E>> entryIterator() {
        return descendingEntryIterator();
      }
      @Override
      public Iterator<E> iterator() {
        return descendingIterator();
      }
    };
  }
New to GrepCode? Check out our FAQ X