package gnu.trove; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /* loaded from: classes2.dex */ public class TByteObjectHashMap extends THash implements TByteHashingStrategy { protected final TByteHashingStrategy _hashingStrategy; protected transient byte[] _set; protected transient V[] _values; private final class HashProcedure implements TByteObjectProcedure { private int a; HashProcedure() { } public int a() { return this.a; } @Override // gnu.trove.TByteObjectProcedure public final boolean a(byte b, V v) { this.a += TByteObjectHashMap.this._hashingStrategy.computeHashCode(b) ^ HashFunctions.a(v); return true; } } public TByteObjectHashMap() { 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.readByte(), 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(); byte[] bArr = this._set; V[] vArr = this._values; int length = vArr.length; while (true) { int i = length - 1; if (length <= 0) { return; } bArr[i] = 0; vArr[i] = null; length = i; } } @Override // gnu.trove.TByteHashingStrategy public final int computeHashCode(byte b) { HashFunctions.a((int) b); return b; } public boolean contains(byte b) { return index(b) >= 0; } public boolean containsKey(byte b) { return contains(b); } 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 TByteObjectHashMap)) { return false; } TByteObjectHashMap tByteObjectHashMap = (TByteObjectHashMap) obj; if (tByteObjectHashMap.size() != size()) { return false; } return forEachEntry(new EqProcedure(tByteObjectHashMap)); } public boolean forEach(TByteProcedure tByteProcedure) { byte[] bArr = 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) && !tByteProcedure.a(bArr[i])) { return false; } length = i; } } /* JADX WARN: Multi-variable type inference failed */ public boolean forEachEntry(TByteObjectProcedure tByteObjectProcedure) { byte[] bArr = 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) && !tByteObjectProcedure.a(bArr[i], unwrapNull(vArr[i]))) { return false; } length = i; } } public boolean forEachKey(TByteProcedure tByteProcedure) { return forEach(tByteProcedure); } /* 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(byte b) { int index = index(b); 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(byte b) { byte[] bArr = this._set; V[] vArr = this._values; if (vArr == THash.EMPTY_OBJECT_ARRAY) { return -1; } int length = bArr.length; int computeHashCode = this._hashingStrategy.computeHashCode(b) & Integer.MAX_VALUE; int i = computeHashCode % length; if (!isFree(vArr, i) && (isRemoved(vArr, i) || bArr[i] != b)) { int i2 = (computeHashCode % (length - 2)) + 1; while (true) { i -= i2; if (i < 0) { i += length; } if (isFree(vArr, i) || (!isRemoved(vArr, i) && bArr[i] == b)) { break; } } } if (isFree(vArr, i)) { return -1; } return i; } protected int insertionIndex(byte b) { if (this._values == THash.EMPTY_OBJECT_ARRAY) { setUp(6); } V[] vArr = this._values; byte[] bArr = this._set; int length = bArr.length; int computeHashCode = this._hashingStrategy.computeHashCode(b) & Integer.MAX_VALUE; int i = computeHashCode % length; if (isFree(vArr, i)) { return i; } if (!isFull(vArr, i) || bArr[i] != b) { int i2 = (computeHashCode % (length - 2)) + 1; int i3 = isRemoved(vArr, i) ? i : -1; do { i -= i2; if (i < 0) { i += length; } if (i3 == -1 && isRemoved(vArr, i)) { i3 = i; } if (!isFull(vArr, i)) { break; } } while (bArr[i] != b); if (isRemoved(vArr, i)) { while (!isFree(vArr, i) && (isRemoved(vArr, i) || bArr[i] != b)) { i -= i2; if (i < 0) { i += length; } } } if (!isFull(vArr, i)) { return i3 == -1 ? i : i3; } } return (-i) - 1; } public TByteObjectIterator iterator() { return new TByteObjectIterator<>(this); } public byte[] keys() { byte[] bArr = new byte[size()]; byte[] bArr2 = this._set; V[] vArr = this._values; int length = vArr.length; int i = 0; while (true) { int i2 = length - 1; if (length <= 0) { return bArr; } if (isFull(vArr, i2)) { bArr[i] = bArr2[i2]; i++; } length = i2; } } /* JADX WARN: Multi-variable type inference failed */ public V put(byte b, V v) { V v2; int insertionIndex = insertionIndex(b); 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] = b; ((V[]) this._values)[insertionIndex] = wrapNull(v); if (z) { postInsertHook(z2); } return v2; } @Override // gnu.trove.THash protected void rehash(int i) { int capacity = capacity(); byte[] bArr = this._set; V[] vArr = this._values; this._set = new byte[i]; this._values = (V[]) new Object[i]; while (true) { int i2 = capacity - 1; if (capacity <= 0) { return; } if (isFull(vArr, i2)) { byte b = bArr[i2]; int insertionIndex = insertionIndex(b); this._set[insertionIndex] = b; this._values[insertionIndex] = vArr[i2]; } capacity = i2; } } public V remove(byte b) { int index = index(b); 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(TByteObjectProcedure tByteObjectProcedure) { byte[] bArr = 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) && !tByteObjectProcedure.a(bArr[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 byte[up]; return up; } public String toString() { final StringBuilder sb = new StringBuilder(); forEachEntry(new TByteObjectProcedure(this) { // from class: gnu.trove.TByteObjectHashMap.1 @Override // gnu.trove.TByteObjectProcedure public boolean a(byte b, V v) { if (sb.length() != 0) { StringBuilder sb2 = sb; sb2.append(','); sb2.append(' '); } sb.append((int) b); 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 TByteObjectProcedure { private final TByteObjectHashMap a; EqProcedure(TByteObjectHashMap tByteObjectHashMap) { this.a = tByteObjectHashMap; } @Override // gnu.trove.TByteObjectProcedure public final boolean a(byte b, V v) { return this.a.index(b) >= 0 && a(v, this.a.get(b)); } private static boolean a(Object obj, Object obj2) { return obj == obj2 || (obj != null && obj.equals(obj2)); } } @Override // gnu.trove.THash public TByteObjectHashMap clone() { TByteObjectHashMap tByteObjectHashMap = (TByteObjectHashMap) super.clone(); V[] vArr = this._values; V[] vArr2 = (V[]) THash.EMPTY_OBJECT_ARRAY; if (vArr != vArr2) { vArr2 = (V[]) ((Object[]) vArr.clone()); } tByteObjectHashMap._values = vArr2; tByteObjectHashMap._set = this._values == THash.EMPTY_OBJECT_ARRAY ? null : (byte[]) this._set.clone(); return tByteObjectHashMap; } public TByteObjectHashMap(int i) { super(i); this._hashingStrategy = this; } public TByteObjectHashMap(int i, float f) { super(i, f); this._hashingStrategy = this; } public TByteObjectHashMap(TByteHashingStrategy tByteHashingStrategy) { this._hashingStrategy = tByteHashingStrategy; } public TByteObjectHashMap(int i, TByteHashingStrategy tByteHashingStrategy) { super(i); this._hashingStrategy = tByteHashingStrategy; } public TByteObjectHashMap(int i, float f, TByteHashingStrategy tByteHashingStrategy) { super(i, f); this._hashingStrategy = tByteHashingStrategy; } }