what-the-bank/sources/com/google/common/collect/AbstractSortedMultiset.java

133 lines
4.9 KiB
Java

package com.google.common.collect;
import com.google.common.base.Preconditions;
import com.google.common.collect.Multiset;
import com.google.common.collect.SortedMultisets;
import java.util.Comparator;
import java.util.Iterator;
import java.util.NavigableSet;
/* loaded from: classes2.dex */
abstract class AbstractSortedMultiset<E> extends AbstractMultiset<E> implements SortedMultiset<E> {
@GwtTransient
final Comparator<? super E> comparator;
private transient SortedMultiset<E> descendingMultiset;
abstract Iterator<Multiset.Entry<E>> descendingEntryIterator();
AbstractSortedMultiset() {
this(Ordering.natural());
}
/* JADX INFO: Access modifiers changed from: package-private */
public AbstractSortedMultiset(Comparator<? super E> comparator) {
this.comparator = (Comparator) Preconditions.checkNotNull(comparator);
}
@Override // com.google.common.collect.AbstractMultiset, com.google.common.collect.Multiset
public NavigableSet<E> elementSet() {
return (NavigableSet) super.elementSet();
}
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.AbstractMultiset
public NavigableSet<E> createElementSet() {
return new SortedMultisets.NavigableElementSet(this);
}
@Override // com.google.common.collect.SortedMultiset
public Multiset.Entry<E> firstEntry() {
Iterator<Multiset.Entry<E>> entryIterator = entryIterator();
if (entryIterator.hasNext()) {
return entryIterator.next();
}
return null;
}
@Override // com.google.common.collect.SortedMultiset
public Multiset.Entry<E> lastEntry() {
Iterator<Multiset.Entry<E>> descendingEntryIterator = descendingEntryIterator();
if (descendingEntryIterator.hasNext()) {
return descendingEntryIterator.next();
}
return null;
}
@Override // com.google.common.collect.SortedMultiset
public Multiset.Entry<E> pollFirstEntry() {
Iterator<Multiset.Entry<E>> entryIterator = entryIterator();
if (!entryIterator.hasNext()) {
return null;
}
Multiset.Entry<E> next = entryIterator.next();
Multiset.Entry<E> immutableEntry = Multisets.immutableEntry(next.getElement(), next.getCount());
entryIterator.remove();
return immutableEntry;
}
@Override // com.google.common.collect.SortedMultiset
public Multiset.Entry<E> pollLastEntry() {
Iterator<Multiset.Entry<E>> descendingEntryIterator = descendingEntryIterator();
if (!descendingEntryIterator.hasNext()) {
return null;
}
Multiset.Entry<E> next = descendingEntryIterator.next();
Multiset.Entry<E> immutableEntry = Multisets.immutableEntry(next.getElement(), next.getCount());
descendingEntryIterator.remove();
return immutableEntry;
}
@Override // com.google.common.collect.SortedMultiset
public SortedMultiset<E> subMultiset(E e, BoundType boundType, E e2, BoundType boundType2) {
Preconditions.checkNotNull(boundType);
Preconditions.checkNotNull(boundType2);
return tailMultiset(e, boundType).headMultiset(e2, boundType2);
}
Iterator<E> descendingIterator() {
return Multisets.iteratorImpl(descendingMultiset());
}
@Override // com.google.common.collect.SortedMultiset
public SortedMultiset<E> descendingMultiset() {
SortedMultiset<E> sortedMultiset = this.descendingMultiset;
if (sortedMultiset != null) {
return sortedMultiset;
}
SortedMultiset<E> createDescendingMultiset = createDescendingMultiset();
this.descendingMultiset = createDescendingMultiset;
return createDescendingMultiset;
}
SortedMultiset<E> createDescendingMultiset() {
return new DescendingMultiset<E>(this) { // from class: com.google.common.collect.AbstractSortedMultiset.1DescendingMultisetImpl
final AbstractSortedMultiset this$0;
{
this.this$0 = this;
}
@Override // com.google.common.collect.DescendingMultiset
Iterator<Multiset.Entry<E>> entryIterator() {
return this.this$0.descendingEntryIterator();
}
@Override // com.google.common.collect.DescendingMultiset, com.google.common.collect.ForwardingCollection, java.util.Collection, java.lang.Iterable, java.util.Set
public Iterator<E> iterator() {
return this.this$0.descendingIterator();
}
@Override // com.google.common.collect.DescendingMultiset
SortedMultiset<E> forwardMultiset() {
return this.this$0;
}
};
}
@Override // com.google.common.collect.SortedMultiset, com.google.common.collect.SortedIterable
public Comparator<? super E> comparator() {
return this.comparator;
}
}