package androidx.collection; import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class SparseArrayCompat implements Cloneable { private static final Object DELETED = new Object(); private boolean mGarbage; private int[] mKeys; private int mSize; private Object[] mValues; public SparseArrayCompat() { this(10); } public SparseArrayCompat(int i) { this.mGarbage = false; if (i == 0) { this.mKeys = ContainerHelpers.EMPTY_INTS; this.mValues = ContainerHelpers.EMPTY_OBJECTS; return; } int idealIntArraySize = ContainerHelpers.idealIntArraySize(i); this.mKeys = new int[idealIntArraySize]; this.mValues = new Object[idealIntArraySize]; } private void gc() { int i = this.mSize; int[] iArr = this.mKeys; Object[] objArr = this.mValues; int i2 = 0; for (int i3 = 0; i3 < i; i3++) { Object obj = objArr[i3]; if (obj != DELETED) { if (i3 != i2) { iArr[i2] = iArr[i3]; objArr[i2] = obj; objArr[i3] = null; } i2++; } } this.mGarbage = false; this.mSize = i2; } public void append(int i, E e) { int i2 = this.mSize; if (i2 == 0 || i > this.mKeys[i2 - 1]) { if (this.mGarbage && i2 >= this.mKeys.length) { gc(); } int i3 = this.mSize; if (i3 >= this.mKeys.length) { int idealIntArraySize = ContainerHelpers.idealIntArraySize(i3 + 1); int[] iArr = new int[idealIntArraySize]; Object[] objArr = new Object[idealIntArraySize]; int[] iArr2 = this.mKeys; System.arraycopy(iArr2, 0, iArr, 0, iArr2.length); Object[] objArr2 = this.mValues; System.arraycopy(objArr2, 0, objArr, 0, objArr2.length); this.mKeys = iArr; this.mValues = objArr; } this.mKeys[i3] = i; this.mValues[i3] = e; this.mSize = i3 + 1; return; } put(i, e); } public void clear() { int i = this.mSize; Object[] objArr = this.mValues; for (int i2 = 0; i2 < i; i2++) { objArr[i2] = null; } this.mSize = 0; this.mGarbage = false; } @Override // java.lang.Object public SparseArrayCompat clone() { try { SparseArrayCompat sparseArrayCompat = (SparseArrayCompat) super.clone(); sparseArrayCompat.mKeys = (int[]) this.mKeys.clone(); sparseArrayCompat.mValues = (Object[]) this.mValues.clone(); return sparseArrayCompat; } catch (CloneNotSupportedException e) { throw new AssertionError(e); } } public boolean containsKey(int i) { return indexOfKey(i) >= 0; } public boolean containsValue(E e) { return indexOfValue(e) >= 0; } @Deprecated public void delete(int i) { remove(i); } @Nullable public E get(int i) { return get(i, null); } public E get(int i, E e) { int binarySearch = ContainerHelpers.binarySearch(this.mKeys, this.mSize, i); if (binarySearch >= 0) { Object[] objArr = this.mValues; if (objArr[binarySearch] != DELETED) { return (E) objArr[binarySearch]; } } return e; } public int indexOfKey(int i) { if (this.mGarbage) { gc(); } return ContainerHelpers.binarySearch(this.mKeys, this.mSize, i); } public int indexOfValue(E e) { if (this.mGarbage) { gc(); } for (int i = 0; i < this.mSize; i++) { if (this.mValues[i] == e) { return i; } } return -1; } public boolean isEmpty() { return size() == 0; } public int keyAt(int i) { if (this.mGarbage) { gc(); } return this.mKeys[i]; } public void put(int i, E e) { int binarySearch = ContainerHelpers.binarySearch(this.mKeys, this.mSize, i); if (binarySearch >= 0) { this.mValues[binarySearch] = e; return; } int i2 = ~binarySearch; int i3 = this.mSize; if (i2 < i3) { Object[] objArr = this.mValues; if (objArr[i2] == DELETED) { this.mKeys[i2] = i; objArr[i2] = e; return; } } if (this.mGarbage && i3 >= this.mKeys.length) { gc(); i2 = ~ContainerHelpers.binarySearch(this.mKeys, this.mSize, i); } int i4 = this.mSize; if (i4 >= this.mKeys.length) { int idealIntArraySize = ContainerHelpers.idealIntArraySize(i4 + 1); int[] iArr = new int[idealIntArraySize]; Object[] objArr2 = new Object[idealIntArraySize]; int[] iArr2 = this.mKeys; System.arraycopy(iArr2, 0, iArr, 0, iArr2.length); Object[] objArr3 = this.mValues; System.arraycopy(objArr3, 0, objArr2, 0, objArr3.length); this.mKeys = iArr; this.mValues = objArr2; } int i5 = this.mSize; if (i5 - i2 != 0) { int[] iArr3 = this.mKeys; int i6 = i2 + 1; System.arraycopy(iArr3, i2, iArr3, i6, i5 - i2); Object[] objArr4 = this.mValues; System.arraycopy(objArr4, i2, objArr4, i6, this.mSize - i2); } this.mKeys[i2] = i; this.mValues[i2] = e; this.mSize++; } /* JADX DEBUG: Multi-variable search result rejected for r4v0, resolved type: androidx.collection.SparseArrayCompat */ /* JADX WARN: Multi-variable type inference failed */ public void putAll(@NonNull SparseArrayCompat sparseArrayCompat) { int size = sparseArrayCompat.size(); for (int i = 0; i < size; i++) { put(sparseArrayCompat.keyAt(i), sparseArrayCompat.valueAt(i)); } } @Nullable public E putIfAbsent(int i, E e) { E e2 = get(i); if (e2 == null) { put(i, e); } return e2; } public void remove(int i) { Object[] objArr; Object obj; int binarySearch = ContainerHelpers.binarySearch(this.mKeys, this.mSize, i); if (binarySearch >= 0 && (objArr = this.mValues)[binarySearch] != (obj = DELETED)) { objArr[binarySearch] = obj; this.mGarbage = true; } } public boolean remove(int i, Object obj) { int indexOfKey = indexOfKey(i); if (indexOfKey < 0) { return false; } E valueAt = valueAt(indexOfKey); if (obj != valueAt && (obj == null || !obj.equals(valueAt))) { return false; } removeAt(indexOfKey); return true; } public void removeAt(int i) { Object[] objArr = this.mValues; Object obj = objArr[i]; Object obj2 = DELETED; if (obj != obj2) { objArr[i] = obj2; this.mGarbage = true; } } public void removeAtRange(int i, int i2) { int min = Math.min(this.mSize, i2 + i); while (i < min) { removeAt(i); i++; } } @Nullable public E replace(int i, E e) { int indexOfKey = indexOfKey(i); if (indexOfKey < 0) { return null; } Object[] objArr = this.mValues; E e2 = (E) objArr[indexOfKey]; objArr[indexOfKey] = e; return e2; } public boolean replace(int i, E e, E e2) { int indexOfKey = indexOfKey(i); if (indexOfKey < 0) { return false; } Object obj = this.mValues[indexOfKey]; if (obj != e && (e == null || !e.equals(obj))) { return false; } this.mValues[indexOfKey] = e2; return true; } public void setValueAt(int i, E e) { if (this.mGarbage) { gc(); } this.mValues[i] = e; } public int size() { if (this.mGarbage) { gc(); } return this.mSize; } @Override // java.lang.Object public String toString() { if (size() <= 0) { return "{}"; } StringBuilder sb = new StringBuilder(this.mSize * 28); sb.append('{'); for (int i = 0; i < this.mSize; i++) { if (i > 0) { sb.append(", "); } sb.append(keyAt(i)); sb.append('='); E valueAt = valueAt(i); if (valueAt != this) { sb.append((Object) valueAt); } else { sb.append("(this Map)"); } } sb.append('}'); return sb.toString(); } public E valueAt(int i) { if (this.mGarbage) { gc(); } return (E) this.mValues[i]; } }