nd.java 3.23 KB
import com.google.common.annotations.GwtCompatible;
import com.google.common.base.Preconditions;
import com.google.common.collect.BoundType;
import com.google.common.collect.Multiset.Entry;
import com.google.common.collect.Multisets;
import com.google.common.collect.Ordering;
import com.google.common.collect.SortedMultiset;
import java.util.Comparator;
import java.util.Iterator;
import java.util.NavigableSet;
import javax.annotation.Nullable;

@GwtCompatible(emulated=true)
public abstract class nd<E>
  extends my<E>
  implements SortedMultiset<E>
{
  final Comparator<? super E> a;
  private transient SortedMultiset<E> b;
  
  nd()
  {
    this(Ordering.natural());
  }
  
  protected nd(Comparator<? super E> paramComparator)
  {
    this.a = ((Comparator)Preconditions.checkNotNull(paramComparator));
  }
  
  public Comparator<? super E> comparator()
  {
    return this.a;
  }
  
  public abstract Iterator<Multiset.Entry<E>> d();
  
  public SortedMultiset<E> descendingMultiset()
  {
    SortedMultiset localSortedMultiset = this.b;
    Object localObject = localSortedMultiset;
    if (localSortedMultiset == null)
    {
      localObject = new nu()
      {
        final SortedMultiset<E> a()
        {
          return nd.this;
        }
        
        final Iterator<Multiset.Entry<E>> b()
        {
          return nd.this.d();
        }
        
        public final Iterator<E> iterator()
        {
          return Multisets.a(nd.this.descendingMultiset());
        }
      };
      this.b = ((SortedMultiset)localObject);
    }
    return (SortedMultiset<E>)localObject;
  }
  
  public NavigableSet<E> elementSet()
  {
    return (NavigableSet)super.elementSet();
  }
  
  public Multiset.Entry<E> firstEntry()
  {
    Iterator localIterator = a();
    if (localIterator.hasNext()) {
      return (Multiset.Entry)localIterator.next();
    }
    return null;
  }
  
  public Multiset.Entry<E> lastEntry()
  {
    Iterator localIterator = d();
    if (localIterator.hasNext()) {
      return (Multiset.Entry)localIterator.next();
    }
    return null;
  }
  
  public Multiset.Entry<E> pollFirstEntry()
  {
    Iterator localIterator = a();
    if (localIterator.hasNext())
    {
      Multiset.Entry localEntry = (Multiset.Entry)localIterator.next();
      localEntry = Multisets.immutableEntry(localEntry.getElement(), localEntry.getCount());
      localIterator.remove();
      return localEntry;
    }
    return null;
  }
  
  public Multiset.Entry<E> pollLastEntry()
  {
    Iterator localIterator = d();
    if (localIterator.hasNext())
    {
      Multiset.Entry localEntry = (Multiset.Entry)localIterator.next();
      localEntry = Multisets.immutableEntry(localEntry.getElement(), localEntry.getCount());
      localIterator.remove();
      return localEntry;
    }
    return null;
  }
  
  public SortedMultiset<E> subMultiset(@Nullable E paramE1, BoundType paramBoundType1, @Nullable E paramE2, BoundType paramBoundType2)
  {
    Preconditions.checkNotNull(paramBoundType1);
    Preconditions.checkNotNull(paramBoundType2);
    return tailMultiset(paramE1, paramBoundType1).headMultiset(paramE2, paramBoundType2);
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/nd.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */