jimu-decompiled/sources/org/greenrobot/greendao/internal/LongHashMap.java
2025-05-13 19:24:51 +02:00

111 lines
2.7 KiB
Java

package org.greenrobot.greendao.internal;
import java.util.Arrays;
/* loaded from: classes2.dex */
public final class LongHashMap<T> {
private Entry<T>[] a;
private int b;
private int c;
private int d;
static final class Entry<T> {
final long a;
T b;
Entry<T> c;
Entry(long j, T t, Entry<T> entry) {
this.a = j;
this.b = t;
this.c = entry;
}
}
public LongHashMap() {
this(16);
}
public T a(long j) {
for (Entry<T> entry = this.a[((((int) j) ^ ((int) (j >>> 32))) & Integer.MAX_VALUE) % this.b]; entry != null; entry = entry.c) {
if (entry.a == j) {
return entry.b;
}
}
return null;
}
public T b(long j) {
int i = ((((int) j) ^ ((int) (j >>> 32))) & Integer.MAX_VALUE) % this.b;
Entry<T> entry = this.a[i];
Entry<T> entry2 = null;
while (entry != null) {
Entry<T> entry3 = entry.c;
if (entry.a == j) {
if (entry2 == null) {
this.a[i] = entry3;
} else {
entry2.c = entry3;
}
this.d--;
return entry.b;
}
entry2 = entry;
entry = entry3;
}
return null;
}
public LongHashMap(int i) {
this.b = i;
this.c = (i * 4) / 3;
this.a = new Entry[i];
}
public T a(long j, T t) {
int i = ((((int) j) ^ ((int) (j >>> 32))) & Integer.MAX_VALUE) % this.b;
Entry<T> entry = this.a[i];
for (Entry<T> entry2 = entry; entry2 != null; entry2 = entry2.c) {
if (entry2.a == j) {
T t2 = entry2.b;
entry2.b = t;
return t2;
}
}
this.a[i] = new Entry<>(j, t, entry);
this.d++;
if (this.d <= this.c) {
return null;
}
b(this.b * 2);
return null;
}
public void b(int i) {
Entry<T>[] entryArr = new Entry[i];
int length = this.a.length;
for (int i2 = 0; i2 < length; i2++) {
Entry<T> entry = this.a[i2];
while (entry != null) {
long j = entry.a;
int i3 = ((((int) (j >>> 32)) ^ ((int) j)) & Integer.MAX_VALUE) % i;
Entry<T> entry2 = entry.c;
entry.c = entryArr[i3];
entryArr[i3] = entry;
entry = entry2;
}
}
this.a = entryArr;
this.b = i;
this.c = (i * 4) / 3;
}
public void a() {
this.d = 0;
Arrays.fill(this.a, (Object) null);
}
public void a(int i) {
b((i * 5) / 3);
}
}