289 lines
9.1 KiB
Java
289 lines
9.1 KiB
Java
package com.google.common.collect;
|
|
|
|
import com.google.common.collect.Multiset;
|
|
import java.lang.Enum;
|
|
import java.util.Arrays;
|
|
import java.util.Iterator;
|
|
import java.util.NoSuchElementException;
|
|
import java.util.Set;
|
|
|
|
/* loaded from: classes.dex */
|
|
class EnumCountHashMap<K extends Enum<K>> extends AbstractObjectCountMap<K> {
|
|
private final Class<K> g;
|
|
|
|
private abstract class EnumIterator<T> extends AbstractObjectCountMap<K>.Itr<T> {
|
|
int e;
|
|
|
|
private EnumIterator() {
|
|
super();
|
|
this.e = -1;
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.Itr, java.util.Iterator
|
|
public boolean hasNext() {
|
|
while (true) {
|
|
int i = this.c;
|
|
int[] iArr = EnumCountHashMap.this.b;
|
|
if (i >= iArr.length || iArr[i] > 0) {
|
|
break;
|
|
}
|
|
this.c = i + 1;
|
|
}
|
|
return this.c != EnumCountHashMap.this.b.length;
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.Itr, java.util.Iterator
|
|
public T next() {
|
|
a();
|
|
if (!hasNext()) {
|
|
throw new NoSuchElementException();
|
|
}
|
|
this.b = true;
|
|
int i = this.c;
|
|
this.e = i;
|
|
this.c = i + 1;
|
|
return a(i);
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.Itr, java.util.Iterator
|
|
public void remove() {
|
|
a();
|
|
CollectPreconditions.a(this.b);
|
|
this.a++;
|
|
EnumCountHashMap.this.e(this.e);
|
|
this.b = false;
|
|
this.e = -1;
|
|
this.c--;
|
|
}
|
|
}
|
|
|
|
class EnumMapEntry extends AbstractObjectCountMap<K>.MapEntry {
|
|
EnumMapEntry(int i) {
|
|
super(i);
|
|
}
|
|
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.MapEntry
|
|
public int a(int i) {
|
|
EnumCountHashMap enumCountHashMap = EnumCountHashMap.this;
|
|
int[] iArr = enumCountHashMap.b;
|
|
int i2 = this.b;
|
|
if (iArr[i2] == -1) {
|
|
enumCountHashMap.a((EnumCountHashMap) this.a, i);
|
|
return 0;
|
|
}
|
|
int i3 = iArr[i2];
|
|
iArr[i2] = i;
|
|
if (i3 == -1) {
|
|
return 0;
|
|
}
|
|
return i3;
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.MapEntry, com.google.common.collect.Multiset.Entry
|
|
public int getCount() {
|
|
int[] iArr = EnumCountHashMap.this.b;
|
|
int i = this.b;
|
|
if (iArr[i] == -1) {
|
|
return 0;
|
|
}
|
|
return iArr[i];
|
|
}
|
|
}
|
|
|
|
EnumCountHashMap(Class<K> cls) {
|
|
this.g = cls;
|
|
this.a = cls.getEnumConstants();
|
|
Object[] objArr = this.a;
|
|
if (objArr != null) {
|
|
this.b = new int[objArr.length];
|
|
Arrays.fill(this.b, 0, objArr.length, -1);
|
|
} else {
|
|
throw new IllegalStateException("Expected Enum class type, but got " + cls.getName());
|
|
}
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
Set<Multiset.Entry<K>> b() {
|
|
return new AbstractObjectCountMap<K>.EntrySetView() { // from class: com.google.common.collect.EnumCountHashMap.2
|
|
@Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set
|
|
public Iterator<Multiset.Entry<K>> iterator() {
|
|
return new EnumCountHashMap<K>.EnumIterator<Multiset.Entry<K>>() { // from class: com.google.common.collect.EnumCountHashMap.2.1
|
|
{
|
|
EnumCountHashMap enumCountHashMap = EnumCountHashMap.this;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.Itr
|
|
public Multiset.Entry<K> a(int i) {
|
|
return new EnumMapEntry(i);
|
|
}
|
|
};
|
|
}
|
|
};
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
Set<K> c() {
|
|
return new AbstractObjectCountMap<K>.KeySetView() { // from class: com.google.common.collect.EnumCountHashMap.1
|
|
private Object[] c() {
|
|
Object[] objArr = new Object[EnumCountHashMap.this.c];
|
|
int i = 0;
|
|
int i2 = 0;
|
|
while (true) {
|
|
EnumCountHashMap enumCountHashMap = EnumCountHashMap.this;
|
|
Object[] objArr2 = enumCountHashMap.a;
|
|
if (i >= objArr2.length) {
|
|
return objArr;
|
|
}
|
|
if (enumCountHashMap.b[i] != -1) {
|
|
objArr[i2] = objArr2[i];
|
|
i2++;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.KeySetView, java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set
|
|
public Iterator<K> iterator() {
|
|
return new EnumCountHashMap<K>.EnumIterator<K>() { // from class: com.google.common.collect.EnumCountHashMap.1.1
|
|
{
|
|
EnumCountHashMap enumCountHashMap = EnumCountHashMap.this;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.Itr
|
|
public K a(int i) {
|
|
return (K) EnumCountHashMap.this.a[i];
|
|
}
|
|
};
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.KeySetView, java.util.AbstractCollection, java.util.Collection, java.util.Set
|
|
public Object[] toArray() {
|
|
return c();
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap.KeySetView, java.util.AbstractCollection, java.util.Collection, java.util.Set
|
|
public <T> T[] toArray(T[] tArr) {
|
|
return (T[]) ObjectArrays.a(c(), 0, EnumCountHashMap.this.c, tArr);
|
|
}
|
|
};
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
int d(int i) {
|
|
do {
|
|
i++;
|
|
if (i >= this.a.length) {
|
|
return -1;
|
|
}
|
|
} while (this.b[i] <= 0);
|
|
return i;
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
int e() {
|
|
for (int i = 0; i < this.a.length; i++) {
|
|
if (this.b[i] > 0) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
public int hashCode() {
|
|
int i = 0;
|
|
int i2 = 0;
|
|
while (true) {
|
|
Object[] objArr = this.a;
|
|
if (i >= objArr.length) {
|
|
return i2;
|
|
}
|
|
i2 += objArr[i].hashCode() ^ this.b[i];
|
|
i++;
|
|
}
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
public void a() {
|
|
this.d++;
|
|
if (this.a != null) {
|
|
int[] iArr = this.b;
|
|
Arrays.fill(iArr, 0, iArr.length, -1);
|
|
this.c = 0;
|
|
}
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
int b(Object obj) {
|
|
if (e(obj)) {
|
|
return ((Enum) obj).ordinal();
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
public int c(Object obj) {
|
|
int ordinal;
|
|
int[] iArr;
|
|
int i;
|
|
if (!e(obj) || (i = (iArr = this.b)[(ordinal = ((Enum) obj).ordinal())]) == -1) {
|
|
return 0;
|
|
}
|
|
iArr[ordinal] = -1;
|
|
this.c--;
|
|
this.d++;
|
|
return i;
|
|
}
|
|
|
|
private boolean e(Object obj) {
|
|
if (obj == null) {
|
|
return false;
|
|
}
|
|
Class<?> cls = obj.getClass();
|
|
return cls == this.g || cls.getSuperclass() == this.g;
|
|
}
|
|
|
|
public boolean d(Object obj) {
|
|
return e(obj) && this.b[((Enum) obj).ordinal()] != -1;
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
int e(int i) {
|
|
return c(this.a[i]);
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
public int a(Object obj) {
|
|
if (d(obj)) {
|
|
return this.b[((Enum) obj).ordinal()];
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
@Override // com.google.common.collect.AbstractObjectCountMap
|
|
public int a(K k, int i) {
|
|
CollectPreconditions.b(i, "count");
|
|
a((EnumCountHashMap<K>) k);
|
|
int ordinal = k.ordinal();
|
|
int[] iArr = this.b;
|
|
int i2 = iArr[ordinal];
|
|
iArr[ordinal] = i;
|
|
this.d++;
|
|
if (i2 != -1) {
|
|
return i2;
|
|
}
|
|
this.c++;
|
|
return 0;
|
|
}
|
|
|
|
private void a(K k) {
|
|
Class<?> cls = k.getClass();
|
|
if (cls == this.g || cls.getSuperclass() == this.g) {
|
|
return;
|
|
}
|
|
throw new ClassCastException(cls + " != " + this.g);
|
|
}
|
|
}
|