package gnu.trove; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /* loaded from: classes2.dex */ public class TIntObjectHashMap extends THash implements TIntHashingStrategy { protected final TIntHashingStrategy _hashingStrategy; protected transient int[] _set; protected transient V[] _values; private final class HashProcedure implements TIntObjectProcedure { private int a; HashProcedure() { } public int a() { return this.a; } @Override // gnu.trove.TIntObjectProcedure public final boolean a(int i, V v) { this.a += TIntObjectHashMap.this._hashingStrategy.computeHashCode(i) ^ HashFunctions.a(v); return true; } } public TIntObjectHashMap() { this._hashingStrategy = this; } private static boolean isFree(Object[] objArr, int i) { return objArr[i] == null; } static boolean isFull(Object[] objArr, int i) { Object obj = objArr[i]; return (obj == null || obj == TObjectHash.REMOVED) ? false : true; } private static boolean isRemoved(Object[] objArr, int i) { return objArr[i] == TObjectHash.REMOVED; } /* JADX WARN: Multi-variable type inference failed */ private void readObject(ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { objectInputStream.defaultReadObject(); int readInt = objectInputStream.readInt(); setUp(readInt); while (true) { int i = readInt - 1; if (readInt <= 0) { return; } put(objectInputStream.readInt(), objectInputStream.readObject()); readInt = i; } } private static V unwrapNull(V v) { if (v == TObjectHash.NULL) { return null; } return v; } private static V wrapNull(V v) { return v == null ? (V) TObjectHash.NULL : v; } private void writeObject(ObjectOutputStream objectOutputStream) throws IOException { objectOutputStream.defaultWriteObject(); objectOutputStream.writeInt(this._size); SerializationProcedure serializationProcedure = new SerializationProcedure(objectOutputStream); if (!forEachEntry(serializationProcedure)) { throw serializationProcedure.b; } } @Override // gnu.trove.THash protected int capacity() { return this._values.length; } @Override // gnu.trove.THash public void clear() { super.clear(); int[] iArr = this._set; V[] vArr = this._values; int length = vArr.length; while (true) { int i = length - 1; if (length <= 0) { return; } iArr[i] = 0; vArr[i] = null; length = i; } } @Override // gnu.trove.TIntHashingStrategy public final int computeHashCode(int i) { HashFunctions.a(i); return i; } public boolean contains(int i) { return index(i) >= 0; } public boolean containsKey(int i) { return contains(i); } public boolean containsValue(V v) { V[] vArr = this._values; if (v != null) { int length = vArr.length; while (true) { int i = length - 1; if (length <= 0) { return false; } Object unwrapNull = unwrapNull(vArr[i]); if (!isFull(vArr, i) || (v != unwrapNull && !v.equals(unwrapNull))) { length = i; } } return true; } int length2 = vArr.length; while (true) { int i2 = length2 - 1; if (length2 <= 0) { return false; } if (TObjectHash.NULL == vArr[i2]) { return true; } length2 = i2; } } public boolean equals(Object obj) { if (!(obj instanceof TIntObjectHashMap)) { return false; } TIntObjectHashMap tIntObjectHashMap = (TIntObjectHashMap) obj; if (tIntObjectHashMap.size() != size()) { return false; } return forEachEntry(new EqProcedure(tIntObjectHashMap)); } public boolean forEach(TIntProcedure tIntProcedure) { int[] iArr = this._set; V[] vArr = this._values; int length = vArr.length; while (true) { int i = length - 1; if (length <= 0) { return true; } if (isFull(vArr, i) && !tIntProcedure.a(iArr[i])) { return false; } length = i; } } /* JADX WARN: Multi-variable type inference failed */ public boolean forEachEntry(TIntObjectProcedure tIntObjectProcedure) { int[] iArr = this._set; V[] vArr = this._values; int length = vArr.length; while (true) { int i = length - 1; if (length <= 0) { return true; } if (isFull(vArr, i) && !tIntObjectProcedure.a(iArr[i], unwrapNull(vArr[i]))) { return false; } length = i; } } public boolean forEachKey(TIntProcedure tIntProcedure) { return forEach(tIntProcedure); } /* JADX WARN: Multi-variable type inference failed */ public boolean forEachValue(TObjectProcedure tObjectProcedure) { V[] vArr = this._values; int length = vArr.length; while (true) { int i = length - 1; if (length <= 0) { return true; } if (isFull(vArr, i) && !tObjectProcedure.execute(unwrapNull(vArr[i]))) { return false; } length = i; } } public V get(int i) { int index = index(i); if (index < 0) { return null; } return (V) unwrapNull(this._values[index]); } public Object[] getValues() { Object[] objArr = new Object[size()]; V[] vArr = this._values; int length = vArr.length; int i = 0; while (true) { int i2 = length - 1; if (length <= 0) { return objArr; } if (isFull(vArr, i2)) { objArr[i] = unwrapNull(vArr[i2]); i++; } length = i2; } } public int hashCode() { HashProcedure hashProcedure = new HashProcedure(); forEachEntry(hashProcedure); return hashProcedure.a(); } protected int index(int i) { int[] iArr = this._set; V[] vArr = this._values; if (vArr == THash.EMPTY_OBJECT_ARRAY) { return -1; } int length = iArr.length; int computeHashCode = this._hashingStrategy.computeHashCode(i) & Integer.MAX_VALUE; int i2 = computeHashCode % length; if (!isFree(vArr, i2) && (isRemoved(vArr, i2) || iArr[i2] != i)) { int i3 = (computeHashCode % (length - 2)) + 1; while (true) { i2 -= i3; if (i2 < 0) { i2 += length; } if (isFree(vArr, i2) || (!isRemoved(vArr, i2) && iArr[i2] == i)) { break; } } } if (isFree(vArr, i2)) { return -1; } return i2; } protected int insertionIndex(int i) { if (this._values == THash.EMPTY_OBJECT_ARRAY) { setUp(6); } V[] vArr = this._values; int[] iArr = this._set; int length = iArr.length; int computeHashCode = this._hashingStrategy.computeHashCode(i) & Integer.MAX_VALUE; int i2 = computeHashCode % length; if (isFree(vArr, i2)) { return i2; } if (!isFull(vArr, i2) || iArr[i2] != i) { int i3 = (computeHashCode % (length - 2)) + 1; int i4 = isRemoved(vArr, i2) ? i2 : -1; do { i2 -= i3; if (i2 < 0) { i2 += length; } if (i4 == -1 && isRemoved(vArr, i2)) { i4 = i2; } if (!isFull(vArr, i2)) { break; } } while (iArr[i2] != i); if (isRemoved(vArr, i2)) { while (!isFree(vArr, i2) && (isRemoved(vArr, i2) || iArr[i2] != i)) { i2 -= i3; if (i2 < 0) { i2 += length; } } } if (!isFull(vArr, i2)) { return i4 == -1 ? i2 : i4; } } return (-i2) - 1; } public TIntObjectIterator iterator() { return new TIntObjectIterator<>(this); } public int[] keys() { int[] iArr = new int[size()]; int[] iArr2 = this._set; V[] vArr = this._values; int length = vArr.length; int i = 0; while (true) { int i2 = length - 1; if (length <= 0) { return iArr; } if (isFull(vArr, i2)) { iArr[i] = iArr2[i2]; i++; } length = i2; } } /* JADX WARN: Multi-variable type inference failed */ public V put(int i, V v) { V v2; int insertionIndex = insertionIndex(i); boolean z = true; boolean z2 = false; if (insertionIndex < 0) { insertionIndex = (-insertionIndex) - 1; v2 = unwrapNull(this._values[insertionIndex]); z = false; } else { z2 = isFree(this._values, insertionIndex); v2 = null; } this._set[insertionIndex] = i; ((V[]) this._values)[insertionIndex] = wrapNull(v); if (z) { postInsertHook(z2); } return v2; } @Override // gnu.trove.THash protected void rehash(int i) { int capacity = capacity(); int[] iArr = this._set; V[] vArr = this._values; this._set = new int[i]; this._values = (V[]) new Object[i]; while (true) { int i2 = capacity - 1; if (capacity <= 0) { return; } if (isFull(vArr, i2)) { int i3 = iArr[i2]; int insertionIndex = insertionIndex(i3); this._set[insertionIndex] = i3; this._values[insertionIndex] = vArr[i2]; } capacity = i2; } } public V remove(int i) { int index = index(i); if (index < 0) { return null; } V v = (V) unwrapNull(this._values[index]); removeAt(index); return v; } @Override // gnu.trove.THash protected void removeAt(int i) { ((V[]) this._values)[i] = TObjectHash.REMOVED; super.removeAt(i); } /* JADX WARN: Multi-variable type inference failed */ public boolean retainEntries(TIntObjectProcedure tIntObjectProcedure) { int[] iArr = this._set; V[] vArr = this._values; stopCompactingOnRemove(); boolean z = false; try { int length = vArr.length; while (true) { int i = length - 1; if (length <= 0) { return z; } if (isFull(vArr, i) && !tIntObjectProcedure.a(iArr[i], unwrapNull(vArr[i]))) { removeAt(i); z = true; } length = i; } } finally { startCompactingOnRemove(z); } } @Override // gnu.trove.THash protected int setUp(int i) { int up = super.setUp(i); this._values = i == -1 ? (V[]) THash.EMPTY_OBJECT_ARRAY : (V[]) new Object[up]; this._set = i == -1 ? null : new int[up]; return up; } public String toString() { final StringBuilder sb = new StringBuilder(); forEachEntry(new TIntObjectProcedure(this) { // from class: gnu.trove.TIntObjectHashMap.1 @Override // gnu.trove.TIntObjectProcedure public boolean a(int i, V v) { if (sb.length() != 0) { StringBuilder sb2 = sb; sb2.append(','); sb2.append(' '); } sb.append(i); sb.append('='); StringBuilder sb3 = sb; if (v == this) { v = (V) "(this Map)"; } sb3.append(v); return true; } }); sb.append('}'); sb.insert(0, '{'); return sb.toString(); } /* JADX WARN: Multi-variable type inference failed */ public void transformValues(TObjectFunction tObjectFunction) { Object[] objArr = this._values; int length = objArr.length; while (true) { int i = length - 1; if (length <= 0) { return; } if (isFull(objArr, i)) { objArr[i] = wrapNull(tObjectFunction.execute(unwrapNull(objArr[i]))); } length = i; } } private static final class EqProcedure implements TIntObjectProcedure { private final TIntObjectHashMap a; EqProcedure(TIntObjectHashMap tIntObjectHashMap) { this.a = tIntObjectHashMap; } @Override // gnu.trove.TIntObjectProcedure public final boolean a(int i, V v) { return this.a.index(i) >= 0 && a(v, this.a.get(i)); } private static boolean a(Object obj, Object obj2) { return obj == obj2 || (obj != null && obj.equals(obj2)); } } @Override // gnu.trove.THash public TIntObjectHashMap clone() { TIntObjectHashMap tIntObjectHashMap = (TIntObjectHashMap) super.clone(); V[] vArr = this._values; V[] vArr2 = (V[]) THash.EMPTY_OBJECT_ARRAY; if (vArr != vArr2) { vArr2 = (V[]) ((Object[]) vArr.clone()); } tIntObjectHashMap._values = vArr2; tIntObjectHashMap._set = this._values == THash.EMPTY_OBJECT_ARRAY ? null : (int[]) this._set.clone(); return tIntObjectHashMap; } public TIntObjectHashMap(int i) { super(i); this._hashingStrategy = this; } public TIntObjectHashMap(int i, float f) { super(i, f); this._hashingStrategy = this; } public TIntObjectHashMap(TIntHashingStrategy tIntHashingStrategy) { this._hashingStrategy = tIntHashingStrategy; } public TIntObjectHashMap(int i, TIntHashingStrategy tIntHashingStrategy) { super(i); this._hashingStrategy = tIntHashingStrategy; } public TIntObjectHashMap(int i, float f, TIntHashingStrategy tIntHashingStrategy) { super(i, f); this._hashingStrategy = tIntHashingStrategy; } }