319 lines
12 KiB
Java
319 lines
12 KiB
Java
package com.discord.utilities.collections;
|
|
|
|
import com.discord.utilities.collections.ShallowPartitionImmutableCollection;
|
|
import d0.a0.a;
|
|
import d0.d0.f;
|
|
import d0.t.c0;
|
|
import d0.t.n;
|
|
import d0.t.o;
|
|
import d0.t.r;
|
|
import d0.t.u;
|
|
import d0.z.d.g0.d;
|
|
import d0.z.d.m;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
import kotlin.ranges.IntRange;
|
|
/* compiled from: ShallowPartitionMap.kt */
|
|
public class ShallowPartitionMap<K, V> implements Map<K, V>, d {
|
|
public static final Companion Companion = new Companion(null);
|
|
private final int numPartitions;
|
|
private final Function1<K, Integer> partitionStrategy;
|
|
private final List<Map<K, V>> partitions;
|
|
private int size;
|
|
|
|
/* compiled from: ShallowPartitionMap.kt */
|
|
public static final class Companion {
|
|
private Companion() {
|
|
}
|
|
|
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
|
this();
|
|
}
|
|
|
|
/* JADX DEBUG: Multi-variable search result rejected for r2v0, resolved type: com.discord.utilities.collections.ShallowPartitionMap$Companion */
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
public static /* synthetic */ ShallowPartitionMap create$default(Companion companion, int i, int i2, int i3, Function1 function1, int i4, Object obj) {
|
|
if ((i4 & 2) != 0) {
|
|
i2 = 100;
|
|
}
|
|
if ((i4 & 4) != 0) {
|
|
i3 = a.roundToInt((float) Math.ceil((double) (((float) (i > 0 ? i : 1)) / ((float) i2))));
|
|
}
|
|
if ((i4 & 8) != 0) {
|
|
function1 = companion.getHashCodePartitionStrategy(i3);
|
|
}
|
|
return companion.create(i, i2, i3, function1);
|
|
}
|
|
|
|
private final <K> Function1<K, Integer> getHashCodePartitionStrategy(int i) {
|
|
return new ShallowPartitionMap$Companion$getHashCodePartitionStrategy$1(i);
|
|
}
|
|
|
|
public final <K, V> ShallowPartitionMap<K, V> create(int i, int i2, int i3, Function1<? super K, Integer> function1) {
|
|
m.checkNotNullParameter(function1, "partitionStrategy");
|
|
IntRange intRange = new IntRange(0, i3);
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(intRange, 10));
|
|
Iterator<Integer> it = intRange.iterator();
|
|
while (it.hasNext()) {
|
|
((c0) it).nextInt();
|
|
arrayList.add(new HashMap(i2));
|
|
}
|
|
return new ShallowPartitionMap<>(arrayList, function1);
|
|
}
|
|
}
|
|
|
|
/* compiled from: ShallowPartitionMap.kt */
|
|
public static class CopiablePartitionMap<K, V> extends ShallowPartitionMap<K, V> {
|
|
private List<? extends Map<K, V>> defensiveCopyPartitions = defensiveCopy(getPartitions());
|
|
private final HashSet<Integer> dirtyPartitionIndices = u.toHashSet(n.getIndices(getPartitions()));
|
|
|
|
/* JADX INFO: super call moved to the top of the method (can break code semantics) */
|
|
public CopiablePartitionMap(int i, Function1<? super K, Integer> function1) {
|
|
super(i, function1);
|
|
m.checkNotNullParameter(function1, "partitionStrategy");
|
|
}
|
|
|
|
@Override // com.discord.utilities.collections.ShallowPartitionMap, java.util.Map
|
|
public void clear() {
|
|
r.addAll(this.dirtyPartitionIndices, n.getIndices(getPartitions()));
|
|
ShallowPartitionMap.super.clear();
|
|
}
|
|
|
|
public final List<Map<K, V>> defensiveCopy(List<? extends Map<K, V>> list) {
|
|
m.checkNotNullParameter(list, "$this$defensiveCopy");
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10));
|
|
int i = 0;
|
|
for (Object obj : list) {
|
|
int i2 = i + 1;
|
|
if (i < 0) {
|
|
n.throwIndexOverflow();
|
|
}
|
|
Object obj2 = (Map) obj;
|
|
if (this.dirtyPartitionIndices.contains(Integer.valueOf(i))) {
|
|
obj2 = new HashMap(getPartitions().get(i));
|
|
}
|
|
arrayList.add(obj2);
|
|
i = i2;
|
|
}
|
|
return arrayList;
|
|
}
|
|
|
|
public Map<K, V> fastCopy() {
|
|
setDefensiveCopyPartitions(defensiveCopy(this.defensiveCopyPartitions));
|
|
return new ShallowPartitionMap(this.defensiveCopyPartitions, getPartitionStrategy());
|
|
}
|
|
|
|
/* JADX DEBUG: Type inference failed for r0v0. Raw type applied. Possible types: java.util.List<? extends java.util.Map<K, V>>, java.util.List<java.util.Map<K, V>> */
|
|
public final List<Map<K, V>> getDefensiveCopyPartitions() {
|
|
return (List<? extends Map<K, V>>) this.defensiveCopyPartitions;
|
|
}
|
|
|
|
@Override // com.discord.utilities.collections.ShallowPartitionMap
|
|
public Map<K, V> getPartitionForWrite(K k) {
|
|
int intValue = getPartitionStrategy().invoke(k).intValue();
|
|
this.dirtyPartitionIndices.add(Integer.valueOf(intValue));
|
|
return getPartitions().get(intValue);
|
|
}
|
|
|
|
public final void setDefensiveCopyPartitions(List<? extends Map<K, V>> list) {
|
|
m.checkNotNullParameter(list, "value");
|
|
this.defensiveCopyPartitions = list;
|
|
this.dirtyPartitionIndices.clear();
|
|
}
|
|
}
|
|
|
|
/* JADX WARNING: Illegal instructions before constructor call */
|
|
public ShallowPartitionMap(int i, Function1<? super K, Integer> function1) {
|
|
this(r0, function1);
|
|
m.checkNotNullParameter(function1, "partitionStrategy");
|
|
IntRange until = f.until(0, i);
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(until, 10));
|
|
Iterator<Integer> it = until.iterator();
|
|
while (it.hasNext()) {
|
|
((c0) it).nextInt();
|
|
arrayList.add(new HashMap());
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: this call moved to the top of the method (can break code semantics) */
|
|
public /* synthetic */ ShallowPartitionMap(int i, Function1 function1, int i2, DefaultConstructorMarker defaultConstructorMarker) {
|
|
this((i2 & 1) != 0 ? 200 : i, function1);
|
|
}
|
|
|
|
/* JADX DEBUG: Multi-variable search result rejected for r2v0, resolved type: java.util.List<? extends java.util.Map<K, V>> */
|
|
/* JADX DEBUG: Multi-variable search result rejected for r3v0, resolved type: kotlin.jvm.functions.Function1<? super K, java.lang.Integer> */
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
public ShallowPartitionMap(List<? extends Map<K, V>> list, Function1<? super K, Integer> function1) {
|
|
m.checkNotNullParameter(list, "partitions");
|
|
m.checkNotNullParameter(function1, "partitionStrategy");
|
|
this.partitions = list;
|
|
this.partitionStrategy = function1;
|
|
this.numPartitions = list.size();
|
|
Iterator it = list.iterator();
|
|
int i = 0;
|
|
while (it.hasNext()) {
|
|
i += ((Map) it.next()).size();
|
|
}
|
|
this.size = i;
|
|
}
|
|
|
|
private final Map<K, V> getPartition(K k) {
|
|
return this.partitions.get(this.partitionStrategy.invoke(k).intValue());
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public void clear() {
|
|
Iterator<T> it = this.partitions.iterator();
|
|
while (it.hasNext()) {
|
|
((Map) it.next()).clear();
|
|
}
|
|
setSize(0);
|
|
}
|
|
|
|
/* JADX DEBUG: Multi-variable search result rejected for r2v0, resolved type: java.lang.Object */
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
@Override // java.util.Map
|
|
public boolean containsKey(Object obj) {
|
|
return getPartition(obj).containsKey(obj);
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public boolean containsValue(Object obj) {
|
|
List<Map<K, V>> list = this.partitions;
|
|
if ((list instanceof Collection) && list.isEmpty()) {
|
|
return false;
|
|
}
|
|
Iterator<T> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
if (((Map) it.next()).containsValue(obj)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public final /* bridge */ Set<Map.Entry<K, V>> entrySet() {
|
|
return getEntries();
|
|
}
|
|
|
|
/* JADX DEBUG: Multi-variable search result rejected for r2v0, resolved type: java.lang.Object */
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
@Override // java.util.Map
|
|
public V get(Object obj) {
|
|
return getPartition(obj).get(obj);
|
|
}
|
|
|
|
public Set<Map.Entry<K, V>> getEntries() {
|
|
List<Map<K, V>> list = this.partitions;
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10));
|
|
Iterator<T> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
arrayList.add(((Map) it.next()).entrySet());
|
|
}
|
|
return new ShallowPartitionImmutableCollection.Set(arrayList, new ShallowPartitionMap$entries$2(this));
|
|
}
|
|
|
|
public Set<K> getKeys() {
|
|
List<Map<K, V>> list = this.partitions;
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10));
|
|
Iterator<T> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
arrayList.add(((Map) it.next()).keySet());
|
|
}
|
|
return new ShallowPartitionImmutableCollection.Set(arrayList, this.partitionStrategy);
|
|
}
|
|
|
|
public final int getNumPartitions() {
|
|
return this.numPartitions;
|
|
}
|
|
|
|
public Map<K, V> getPartitionForWrite(K k) {
|
|
return this.partitions.get(this.partitionStrategy.invoke(k).intValue());
|
|
}
|
|
|
|
public final Function1<K, Integer> getPartitionStrategy() {
|
|
return this.partitionStrategy;
|
|
}
|
|
|
|
public final List<Map<K, V>> getPartitions() {
|
|
return this.partitions;
|
|
}
|
|
|
|
public int getSize() {
|
|
return this.size;
|
|
}
|
|
|
|
public Collection<V> getValues() {
|
|
List<Map<K, V>> list = this.partitions;
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10));
|
|
Iterator<T> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
arrayList.add(((Map) it.next()).values());
|
|
}
|
|
return new ShallowPartitionImmutableCollection(arrayList, null, 2, null);
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public boolean isEmpty() {
|
|
return size() == 0;
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public final /* bridge */ Set<K> keySet() {
|
|
return getKeys();
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public V put(K k, V v) {
|
|
V put = getPartitionForWrite(k).put(k, v);
|
|
if (put == null) {
|
|
setSize(size() + 1);
|
|
}
|
|
return put;
|
|
}
|
|
|
|
/* JADX DEBUG: Multi-variable search result rejected for r2v0, resolved type: com.discord.utilities.collections.ShallowPartitionMap<K, V> */
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
@Override // java.util.Map
|
|
public void putAll(Map<? extends K, ? extends V> map) {
|
|
m.checkNotNullParameter(map, "from");
|
|
for (Map.Entry<? extends K, ? extends V> entry : map.entrySet()) {
|
|
put(entry.getKey(), entry.getValue());
|
|
}
|
|
}
|
|
|
|
/* JADX DEBUG: Multi-variable search result rejected for r2v0, resolved type: java.lang.Object */
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
@Override // java.util.Map
|
|
public V remove(Object obj) {
|
|
V remove = getPartitionForWrite(obj).remove(obj);
|
|
if (remove == null) {
|
|
return null;
|
|
}
|
|
setSize(size() - 1);
|
|
return remove;
|
|
}
|
|
|
|
public void setSize(int i) {
|
|
this.size = i;
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public final /* bridge */ int size() {
|
|
return getSize();
|
|
}
|
|
|
|
@Override // java.util.Map
|
|
public final /* bridge */ Collection<V> values() {
|
|
return getValues();
|
|
}
|
|
}
|