175 lines
5.1 KiB
Java
175 lines
5.1 KiB
Java
package com.google.common.collect;
|
|
|
|
import com.google.common.base.Objects;
|
|
import com.google.common.collect.Multiset;
|
|
import com.google.common.collect.Multisets;
|
|
import java.util.AbstractCollection;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.Set;
|
|
|
|
/* loaded from: classes.dex */
|
|
abstract class AbstractMultiset<E> extends AbstractCollection<E> implements Multiset<E> {
|
|
private transient Set<E> elementSet;
|
|
private transient Set<Multiset.Entry<E>> entrySet;
|
|
|
|
class ElementSet extends Multisets.ElementSet<E> {
|
|
ElementSet() {
|
|
}
|
|
|
|
@Override // com.google.common.collect.Multisets.ElementSet
|
|
Multiset<E> c() {
|
|
return AbstractMultiset.this;
|
|
}
|
|
}
|
|
|
|
class EntrySet extends Multisets.EntrySet<E> {
|
|
EntrySet() {
|
|
}
|
|
|
|
@Override // com.google.common.collect.Multisets.EntrySet
|
|
Multiset<E> c() {
|
|
return AbstractMultiset.this;
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set
|
|
public Iterator<Multiset.Entry<E>> iterator() {
|
|
return AbstractMultiset.this.entryIterator();
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection, java.util.Set
|
|
public int size() {
|
|
return AbstractMultiset.this.distinctElements();
|
|
}
|
|
}
|
|
|
|
AbstractMultiset() {
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection, com.google.common.collect.Multiset
|
|
public boolean add(E e) {
|
|
add(e, 1);
|
|
return true;
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection
|
|
public boolean addAll(Collection<? extends E> collection) {
|
|
return Multisets.a((Multiset) this, (Collection) collection);
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection
|
|
public void clear() {
|
|
Iterators.b(entryIterator());
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection, com.google.common.collect.Multiset
|
|
public boolean contains(Object obj) {
|
|
return count(obj) > 0;
|
|
}
|
|
|
|
public int count(Object obj) {
|
|
for (Multiset.Entry<E> entry : entrySet()) {
|
|
if (Objects.a(entry.a(), obj)) {
|
|
return entry.getCount();
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
Set<E> createElementSet() {
|
|
return new ElementSet();
|
|
}
|
|
|
|
Set<Multiset.Entry<E>> createEntrySet() {
|
|
return new EntrySet();
|
|
}
|
|
|
|
abstract int distinctElements();
|
|
|
|
@Override // com.google.common.collect.Multiset
|
|
public Set<E> elementSet() {
|
|
Set<E> set = this.elementSet;
|
|
if (set != null) {
|
|
return set;
|
|
}
|
|
Set<E> createElementSet = createElementSet();
|
|
this.elementSet = createElementSet;
|
|
return createElementSet;
|
|
}
|
|
|
|
abstract Iterator<Multiset.Entry<E>> entryIterator();
|
|
|
|
@Override // com.google.common.collect.Multiset
|
|
public Set<Multiset.Entry<E>> entrySet() {
|
|
Set<Multiset.Entry<E>> set = this.entrySet;
|
|
if (set != null) {
|
|
return set;
|
|
}
|
|
Set<Multiset.Entry<E>> createEntrySet = createEntrySet();
|
|
this.entrySet = createEntrySet;
|
|
return createEntrySet;
|
|
}
|
|
|
|
@Override // java.util.Collection, com.google.common.collect.Multiset
|
|
public boolean equals(Object obj) {
|
|
return Multisets.a(this, obj);
|
|
}
|
|
|
|
@Override // java.util.Collection, com.google.common.collect.Multiset
|
|
public int hashCode() {
|
|
return entrySet().hashCode();
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection
|
|
public boolean isEmpty() {
|
|
return entrySet().isEmpty();
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable
|
|
public Iterator<E> iterator() {
|
|
return Multisets.a((Multiset) this);
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection, com.google.common.collect.Multiset
|
|
public boolean remove(Object obj) {
|
|
return remove(obj, 1) > 0;
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection
|
|
public boolean removeAll(Collection<?> collection) {
|
|
return Multisets.b(this, collection);
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection
|
|
public boolean retainAll(Collection<?> collection) {
|
|
return Multisets.c(this, collection);
|
|
}
|
|
|
|
public int setCount(E e, int i) {
|
|
return Multisets.a(this, e, i);
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection, java.util.Collection, com.google.common.collect.Multiset
|
|
public int size() {
|
|
return Multisets.b((Multiset<?>) this);
|
|
}
|
|
|
|
@Override // java.util.AbstractCollection
|
|
public String toString() {
|
|
return entrySet().toString();
|
|
}
|
|
|
|
public int add(E e, int i) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
public int remove(Object obj, int i) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
@Override // com.google.common.collect.Multiset
|
|
public boolean setCount(E e, int i, int i2) {
|
|
return Multisets.a(this, e, i, i2);
|
|
}
|
|
}
|