jimu-decompiled/sources/com/google/common/collect/EnumCountHashMap.java
2025-05-13 19:24:51 +02:00

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);
}
}