discord-jadx/app/src/main/java/androidx/collection/LongSparseArray.java

321 lines
8.9 KiB
Java

package androidx.collection;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class LongSparseArray<E> implements Cloneable {
private static final Object DELETED = new Object();
private boolean mGarbage;
private long[] mKeys;
private int mSize;
private Object[] mValues;
public LongSparseArray() {
this(10);
}
public LongSparseArray(int i) {
this.mGarbage = false;
if (i == 0) {
this.mKeys = ContainerHelpers.EMPTY_LONGS;
this.mValues = ContainerHelpers.EMPTY_OBJECTS;
return;
}
int idealLongArraySize = ContainerHelpers.idealLongArraySize(i);
this.mKeys = new long[idealLongArraySize];
this.mValues = new Object[idealLongArraySize];
}
private void gc() {
int i = this.mSize;
long[] jArr = 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) {
jArr[i2] = jArr[i3];
objArr[i2] = obj;
objArr[i3] = null;
}
i2++;
}
}
this.mGarbage = false;
this.mSize = i2;
}
public void append(long j, E e) {
int i = this.mSize;
if (i == 0 || j > this.mKeys[i - 1]) {
if (this.mGarbage && i >= this.mKeys.length) {
gc();
}
int i2 = this.mSize;
if (i2 >= this.mKeys.length) {
int idealLongArraySize = ContainerHelpers.idealLongArraySize(i2 + 1);
long[] jArr = new long[idealLongArraySize];
Object[] objArr = new Object[idealLongArraySize];
long[] jArr2 = this.mKeys;
System.arraycopy(jArr2, 0, jArr, 0, jArr2.length);
Object[] objArr2 = this.mValues;
System.arraycopy(objArr2, 0, objArr, 0, objArr2.length);
this.mKeys = jArr;
this.mValues = objArr;
}
this.mKeys[i2] = j;
this.mValues[i2] = e;
this.mSize = i2 + 1;
return;
}
put(j, 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 LongSparseArray<E> clone() {
try {
LongSparseArray<E> longSparseArray = (LongSparseArray) super.clone();
longSparseArray.mKeys = (long[]) this.mKeys.clone();
longSparseArray.mValues = (Object[]) this.mValues.clone();
return longSparseArray;
} catch (CloneNotSupportedException e) {
throw new AssertionError(e);
}
}
public boolean containsKey(long j) {
return indexOfKey(j) >= 0;
}
public boolean containsValue(E e) {
return indexOfValue(e) >= 0;
}
@Deprecated
public void delete(long j) {
remove(j);
}
@Nullable
public E get(long j) {
return get(j, null);
}
public E get(long j, E e) {
int binarySearch = ContainerHelpers.binarySearch(this.mKeys, this.mSize, j);
if (binarySearch >= 0) {
Object[] objArr = this.mValues;
if (objArr[binarySearch] != DELETED) {
return (E) objArr[binarySearch];
}
}
return e;
}
public int indexOfKey(long j) {
if (this.mGarbage) {
gc();
}
return ContainerHelpers.binarySearch(this.mKeys, this.mSize, j);
}
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 long keyAt(int i) {
if (this.mGarbage) {
gc();
}
return this.mKeys[i];
}
public void put(long j, E e) {
int binarySearch = ContainerHelpers.binarySearch(this.mKeys, this.mSize, j);
if (binarySearch >= 0) {
this.mValues[binarySearch] = e;
return;
}
int i = ~binarySearch;
int i2 = this.mSize;
if (i < i2) {
Object[] objArr = this.mValues;
if (objArr[i] == DELETED) {
this.mKeys[i] = j;
objArr[i] = e;
return;
}
}
if (this.mGarbage && i2 >= this.mKeys.length) {
gc();
i = ~ContainerHelpers.binarySearch(this.mKeys, this.mSize, j);
}
int i3 = this.mSize;
if (i3 >= this.mKeys.length) {
int idealLongArraySize = ContainerHelpers.idealLongArraySize(i3 + 1);
long[] jArr = new long[idealLongArraySize];
Object[] objArr2 = new Object[idealLongArraySize];
long[] jArr2 = this.mKeys;
System.arraycopy(jArr2, 0, jArr, 0, jArr2.length);
Object[] objArr3 = this.mValues;
System.arraycopy(objArr3, 0, objArr2, 0, objArr3.length);
this.mKeys = jArr;
this.mValues = objArr2;
}
int i4 = this.mSize;
if (i4 - i != 0) {
long[] jArr3 = this.mKeys;
int i5 = i + 1;
System.arraycopy(jArr3, i, jArr3, i5, i4 - i);
Object[] objArr4 = this.mValues;
System.arraycopy(objArr4, i, objArr4, i5, this.mSize - i);
}
this.mKeys[i] = j;
this.mValues[i] = e;
this.mSize++;
}
/* JADX DEBUG: Multi-variable search result rejected for r5v0, resolved type: androidx.collection.LongSparseArray<E> */
/* JADX WARN: Multi-variable type inference failed */
public void putAll(@NonNull LongSparseArray<? extends E> longSparseArray) {
int size = longSparseArray.size();
for (int i = 0; i < size; i++) {
put(longSparseArray.keyAt(i), longSparseArray.valueAt(i));
}
}
@Nullable
public E putIfAbsent(long j, E e) {
E e2 = get(j);
if (e2 == null) {
put(j, e);
}
return e2;
}
public void remove(long j) {
Object[] objArr;
Object obj;
int binarySearch = ContainerHelpers.binarySearch(this.mKeys, this.mSize, j);
if (binarySearch >= 0 && (objArr = this.mValues)[binarySearch] != (obj = DELETED)) {
objArr[binarySearch] = obj;
this.mGarbage = true;
}
}
public boolean remove(long j, Object obj) {
int indexOfKey = indexOfKey(j);
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;
}
}
@Nullable
public E replace(long j, E e) {
int indexOfKey = indexOfKey(j);
if (indexOfKey < 0) {
return null;
}
Object[] objArr = this.mValues;
E e2 = (E) objArr[indexOfKey];
objArr[indexOfKey] = e;
return e2;
}
public boolean replace(long j, E e, E e2) {
int indexOfKey = indexOfKey(j);
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];
}
}