what-the-bank/sources/com/google/common/collect/DenseImmutableTable.java

297 lines
12 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package com.google.common.collect;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableTable;
import com.google.common.collect.Table;
import java.lang.reflect.Array;
import java.util.Map;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V> {
private final int[] cellColumnIndices;
private final int[] cellRowIndices;
private final int[] columnCounts;
private final ImmutableMap<C, Integer> columnKeyToIndex;
private final ImmutableMap<C, ImmutableMap<R, V>> columnMap;
private final int[] rowCounts;
private final ImmutableMap<R, Integer> rowKeyToIndex;
private final ImmutableMap<R, ImmutableMap<C, V>> rowMap;
private final V[][] values;
@Override // com.google.common.collect.ImmutableTable, com.google.common.collect.Table
public final /* bridge */ /* synthetic */ Map columnMap() {
return columnMap();
}
@Override // com.google.common.collect.ImmutableTable, com.google.common.collect.Table
public final /* bridge */ /* synthetic */ Map rowMap() {
return rowMap();
}
/* JADX INFO: Access modifiers changed from: package-private */
public DenseImmutableTable(ImmutableList<Table.Cell<R, C, V>> immutableList, ImmutableSet<R> immutableSet, ImmutableSet<C> immutableSet2) {
this.values = (V[][]) ((Object[][]) Array.newInstance((Class<?>) Object.class, immutableSet.size(), immutableSet2.size()));
ImmutableMap<R, Integer> indexMap = Maps.indexMap(immutableSet);
this.rowKeyToIndex = indexMap;
ImmutableMap<C, Integer> indexMap2 = Maps.indexMap(immutableSet2);
this.columnKeyToIndex = indexMap2;
this.rowCounts = new int[indexMap.size()];
this.columnCounts = new int[indexMap2.size()];
int[] iArr = new int[immutableList.size()];
int[] iArr2 = new int[immutableList.size()];
for (int i = 0; i < immutableList.size(); i++) {
Table.Cell<R, C, V> cell = immutableList.get(i);
R rowKey = cell.getRowKey();
C columnKey = cell.getColumnKey();
int intValue = this.rowKeyToIndex.get(rowKey).intValue();
int intValue2 = this.columnKeyToIndex.get(columnKey).intValue();
checkNoDuplicate(rowKey, columnKey, this.values[intValue][intValue2], cell.getValue());
this.values[intValue][intValue2] = cell.getValue();
int[] iArr3 = this.rowCounts;
iArr3[intValue] = iArr3[intValue] + 1;
int[] iArr4 = this.columnCounts;
iArr4[intValue2] = iArr4[intValue2] + 1;
iArr[i] = intValue;
iArr2[i] = intValue2;
}
this.cellRowIndices = iArr;
this.cellColumnIndices = iArr2;
this.rowMap = new RowMap();
this.columnMap = new ColumnMap();
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public static abstract class ImmutableArrayMap<K, V> extends ImmutableMap.IteratorBasedImmutableMap<K, V> {
private final int size;
abstract V getValue(int i);
abstract ImmutableMap<K, Integer> keyToIndex();
ImmutableArrayMap(int i) {
this.size = i;
}
private boolean isFull() {
return this.size == keyToIndex().size();
}
K getKey(int i) {
return keyToIndex().keySet().asList().get(i);
}
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.ImmutableMap.IteratorBasedImmutableMap, com.google.common.collect.ImmutableMap
public ImmutableSet<K> createKeySet() {
return isFull() ? keyToIndex().keySet() : super.createKeySet();
}
@Override // com.google.common.collect.ImmutableMap, java.util.Map
public V get(Object obj) {
Integer num = keyToIndex().get(obj);
if (num == null) {
return null;
}
return getValue(num.intValue());
}
@Override // com.google.common.collect.ImmutableMap.IteratorBasedImmutableMap
UnmodifiableIterator<Map.Entry<K, V>> entryIterator() {
return new AbstractIterator<Map.Entry<K, V>>(this) { // from class: com.google.common.collect.DenseImmutableTable.ImmutableArrayMap.1
private int index = -1;
private final int maxIndex;
final ImmutableArrayMap this$0;
{
this.this$0 = this;
this.maxIndex = this.keyToIndex().size();
}
/* JADX INFO: Access modifiers changed from: protected */
@Override // com.google.common.collect.AbstractIterator
public Map.Entry<K, V> computeNext() {
int i = this.index;
while (true) {
int i2 = i + 1;
this.index = i2;
if (i2 < this.maxIndex) {
Object value = this.this$0.getValue(i2);
if (value != null) {
return Maps.immutableEntry(this.this$0.getKey(this.index), value);
}
i = this.index;
} else {
return endOfData();
}
}
}
};
}
@Override // java.util.Map
public int size() {
return this.size;
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public final class Row extends ImmutableArrayMap<C, V> {
private final int rowIndex;
final DenseImmutableTable this$0;
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.ImmutableMap
public final boolean isPartialView() {
return true;
}
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
Row(DenseImmutableTable denseImmutableTable, int i) {
super(denseImmutableTable.rowCounts[i]);
this.this$0 = denseImmutableTable;
this.rowIndex = i;
}
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
final ImmutableMap<C, Integer> keyToIndex() {
return this.this$0.columnKeyToIndex;
}
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
final V getValue(int i) {
return (V) this.this$0.values[this.rowIndex][i];
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public final class Column extends ImmutableArrayMap<R, V> {
private final int columnIndex;
final DenseImmutableTable this$0;
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.ImmutableMap
public final boolean isPartialView() {
return true;
}
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
Column(DenseImmutableTable denseImmutableTable, int i) {
super(denseImmutableTable.columnCounts[i]);
this.this$0 = denseImmutableTable;
this.columnIndex = i;
}
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
final ImmutableMap<R, Integer> keyToIndex() {
return this.this$0.rowKeyToIndex;
}
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
final V getValue(int i) {
return (V) this.this$0.values[i][this.columnIndex];
}
}
/* loaded from: classes2.dex */
final class RowMap extends ImmutableArrayMap<R, ImmutableMap<C, V>> {
final DenseImmutableTable this$0;
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.ImmutableMap
public final boolean isPartialView() {
return false;
}
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
private RowMap(DenseImmutableTable denseImmutableTable) {
super(denseImmutableTable.rowCounts.length);
this.this$0 = denseImmutableTable;
}
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
final ImmutableMap<R, Integer> keyToIndex() {
return this.this$0.rowKeyToIndex;
}
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
public final ImmutableMap<C, V> getValue(int i) {
return new Row(this.this$0, i);
}
}
/* loaded from: classes2.dex */
final class ColumnMap extends ImmutableArrayMap<C, ImmutableMap<R, V>> {
final DenseImmutableTable this$0;
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.ImmutableMap
public final boolean isPartialView() {
return false;
}
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
private ColumnMap(DenseImmutableTable denseImmutableTable) {
super(denseImmutableTable.columnCounts.length);
this.this$0 = denseImmutableTable;
}
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
final ImmutableMap<C, Integer> keyToIndex() {
return this.this$0.columnKeyToIndex;
}
/* JADX INFO: Access modifiers changed from: package-private */
@Override // com.google.common.collect.DenseImmutableTable.ImmutableArrayMap
public final ImmutableMap<R, V> getValue(int i) {
return new Column(this.this$0, i);
}
}
@Override // com.google.common.collect.ImmutableTable, com.google.common.collect.Table
public final ImmutableMap<C, Map<R, V>> columnMap() {
return ImmutableMap.copyOf((Map) this.columnMap);
}
@Override // com.google.common.collect.ImmutableTable, com.google.common.collect.Table
public final ImmutableMap<R, Map<C, V>> rowMap() {
return ImmutableMap.copyOf((Map) this.rowMap);
}
@Override // com.google.common.collect.ImmutableTable, com.google.common.collect.AbstractTable, com.google.common.collect.Table
public final V get(Object obj, Object obj2) {
Integer num = this.rowKeyToIndex.get(obj);
Integer num2 = this.columnKeyToIndex.get(obj2);
if (num == null || num2 == null) {
return null;
}
return this.values[num.intValue()][num2.intValue()];
}
@Override // com.google.common.collect.Table
public final int size() {
return this.cellRowIndices.length;
}
@Override // com.google.common.collect.RegularImmutableTable
final Table.Cell<R, C, V> getCell(int i) {
int i2 = this.cellRowIndices[i];
int i3 = this.cellColumnIndices[i];
return cellOf(rowKeySet().asList().get(i2), columnKeySet().asList().get(i3), this.values[i2][i3]);
}
@Override // com.google.common.collect.RegularImmutableTable
final V getValue(int i) {
return this.values[this.cellRowIndices[i]][this.cellColumnIndices[i]];
}
@Override // com.google.common.collect.ImmutableTable
final ImmutableTable.SerializedForm createSerializedForm() {
return ImmutableTable.SerializedForm.create(this, this.cellRowIndices, this.cellColumnIndices);
}
}