package com.google.common.collect; import com.google.common.base.Objects; import com.google.common.collect.Sets; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Arrays; import java.util.Collection; import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; /* loaded from: classes.dex */ public final class LinkedHashMultimap extends LinkedHashMultimapGwtSerializationDependencies { private static final int DEFAULT_KEY_CAPACITY = 16; private static final int DEFAULT_VALUE_SET_CAPACITY = 2; static final double VALUE_SET_LOAD_FACTOR = 1.0d; private static final long serialVersionUID = 1; private transient ValueEntry multimapHeaderEntry; transient int valueSetCapacity; static final class ValueEntry extends ImmutableEntry implements ValueSetLink { final int c; ValueEntry d; ValueSetLink e; ValueSetLink f; ValueEntry g; ValueEntry h; ValueEntry(K k, V v, int i, ValueEntry valueEntry) { super(k, v); this.c = i; this.d = valueEntry; } boolean a(Object obj, int i) { return this.c == i && Objects.a(getValue(), obj); } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public ValueSetLink b() { return this.f; } public ValueEntry c() { return this.g; } public ValueEntry d() { return this.h; } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public ValueSetLink a() { return this.e; } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public void b(ValueSetLink valueSetLink) { this.e = valueSetLink; } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public void a(ValueSetLink valueSetLink) { this.f = valueSetLink; } public void b(ValueEntry valueEntry) { this.h = valueEntry; } public void a(ValueEntry valueEntry) { this.g = valueEntry; } } final class ValueSet extends Sets.ImprovedAbstractSet implements ValueSetLink { private final K a; ValueEntry[] b; private int c = 0; private int d = 0; private ValueSetLink e = this; private ValueSetLink f = this; ValueSet(K k, int i) { this.a = k; this.b = new ValueEntry[Hashing.a(i, LinkedHashMultimap.VALUE_SET_LOAD_FACTOR)]; } private int c() { return this.b.length - 1; } private void d() { if (Hashing.a(this.c, this.b.length, LinkedHashMultimap.VALUE_SET_LOAD_FACTOR)) { ValueEntry[] valueEntryArr = new ValueEntry[this.b.length * 2]; this.b = valueEntryArr; int length = valueEntryArr.length - 1; for (ValueSetLink valueSetLink = this.e; valueSetLink != this; valueSetLink = valueSetLink.b()) { ValueEntry valueEntry = (ValueEntry) valueSetLink; int i = valueEntry.c & length; valueEntry.d = valueEntryArr[i]; valueEntryArr[i] = valueEntry; } } } @Override // java.util.AbstractCollection, java.util.Collection, java.util.Set public boolean add(V v) { int a = Hashing.a(v); int c = c() & a; ValueEntry valueEntry = this.b[c]; for (ValueEntry valueEntry2 = valueEntry; valueEntry2 != null; valueEntry2 = valueEntry2.d) { if (valueEntry2.a(v, a)) { return false; } } ValueEntry valueEntry3 = new ValueEntry<>(this.a, v, a, valueEntry); LinkedHashMultimap.succeedsInValueSet(this.f, valueEntry3); LinkedHashMultimap.succeedsInValueSet(valueEntry3, this); LinkedHashMultimap.succeedsInMultimap(LinkedHashMultimap.this.multimapHeaderEntry.c(), valueEntry3); LinkedHashMultimap.succeedsInMultimap(valueEntry3, LinkedHashMultimap.this.multimapHeaderEntry); this.b[c] = valueEntry3; this.c++; this.d++; d(); return true; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.Set public void clear() { Arrays.fill(this.b, (Object) null); this.c = 0; for (ValueSetLink valueSetLink = this.e; valueSetLink != this; valueSetLink = valueSetLink.b()) { LinkedHashMultimap.deleteFromMultimap((ValueEntry) valueSetLink); } LinkedHashMultimap.succeedsInValueSet(this, this); this.d++; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.Set public boolean contains(Object obj) { int a = Hashing.a(obj); for (ValueEntry valueEntry = this.b[c() & a]; valueEntry != null; valueEntry = valueEntry.d) { if (valueEntry.a(obj, a)) { return true; } } return false; } @Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set public Iterator iterator() { return new Iterator() { // from class: com.google.common.collect.LinkedHashMultimap.ValueSet.1 ValueSetLink a; ValueEntry b; int c; { this.a = ValueSet.this.e; this.c = ValueSet.this.d; } private void a() { if (ValueSet.this.d != this.c) { throw new ConcurrentModificationException(); } } @Override // java.util.Iterator public boolean hasNext() { a(); return this.a != ValueSet.this; } @Override // java.util.Iterator public V next() { if (!hasNext()) { throw new NoSuchElementException(); } ValueEntry valueEntry = (ValueEntry) this.a; V value = valueEntry.getValue(); this.b = valueEntry; this.a = valueEntry.b(); return value; } @Override // java.util.Iterator public void remove() { a(); CollectPreconditions.a(this.b != null); ValueSet.this.remove(this.b.getValue()); this.c = ValueSet.this.d; this.b = null; } }; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.Set public boolean remove(Object obj) { int a = Hashing.a(obj); int c = c() & a; ValueEntry valueEntry = this.b[c]; ValueEntry valueEntry2 = null; while (true) { ValueEntry valueEntry3 = valueEntry2; valueEntry2 = valueEntry; if (valueEntry2 == null) { return false; } if (valueEntry2.a(obj, a)) { if (valueEntry3 == null) { this.b[c] = valueEntry2.d; } else { valueEntry3.d = valueEntry2.d; } LinkedHashMultimap.deleteFromValueSet(valueEntry2); LinkedHashMultimap.deleteFromMultimap(valueEntry2); this.c--; this.d++; return true; } valueEntry = valueEntry2.d; } } @Override // java.util.AbstractCollection, java.util.Collection, java.util.Set public int size() { return this.c; } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public ValueSetLink a() { return this.f; } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public ValueSetLink b() { return this.e; } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public void a(ValueSetLink valueSetLink) { this.e = valueSetLink; } @Override // com.google.common.collect.LinkedHashMultimap.ValueSetLink public void b(ValueSetLink valueSetLink) { this.f = valueSetLink; } } private interface ValueSetLink { ValueSetLink a(); void a(ValueSetLink valueSetLink); ValueSetLink b(); void b(ValueSetLink valueSetLink); } private LinkedHashMultimap(int i, int i2) { super(new LinkedHashMap(i)); this.valueSetCapacity = 2; CollectPreconditions.a(i2, "expectedValuesPerKey"); this.valueSetCapacity = i2; this.multimapHeaderEntry = new ValueEntry<>(null, null, 0, null); ValueEntry valueEntry = this.multimapHeaderEntry; succeedsInMultimap(valueEntry, valueEntry); } public static LinkedHashMultimap create() { return new LinkedHashMultimap<>(16, 2); } /* JADX INFO: Access modifiers changed from: private */ public static void deleteFromMultimap(ValueEntry valueEntry) { succeedsInMultimap(valueEntry.c(), valueEntry.d()); } /* JADX INFO: Access modifiers changed from: private */ public static void deleteFromValueSet(ValueSetLink valueSetLink) { succeedsInValueSet(valueSetLink.a(), valueSetLink.b()); } /* JADX WARN: Multi-variable type inference failed */ private void readObject(ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { objectInputStream.defaultReadObject(); this.multimapHeaderEntry = new ValueEntry<>(null, null, 0, null); ValueEntry valueEntry = this.multimapHeaderEntry; succeedsInMultimap(valueEntry, valueEntry); this.valueSetCapacity = 2; int readInt = objectInputStream.readInt(); LinkedHashMap linkedHashMap = new LinkedHashMap(); for (int i = 0; i < readInt; i++) { Object readObject = objectInputStream.readObject(); linkedHashMap.put(readObject, createCollection(readObject)); } int readInt2 = objectInputStream.readInt(); for (int i2 = 0; i2 < readInt2; i2++) { Object readObject2 = objectInputStream.readObject(); ((Collection) linkedHashMap.get(readObject2)).add(objectInputStream.readObject()); } setMap(linkedHashMap); } /* JADX INFO: Access modifiers changed from: private */ public static void succeedsInMultimap(ValueEntry valueEntry, ValueEntry valueEntry2) { valueEntry.b((ValueEntry) valueEntry2); valueEntry2.a((ValueEntry) valueEntry); } /* JADX INFO: Access modifiers changed from: private */ public static void succeedsInValueSet(ValueSetLink valueSetLink, ValueSetLink valueSetLink2) { valueSetLink.a(valueSetLink2); valueSetLink2.b(valueSetLink); } private void writeObject(ObjectOutputStream objectOutputStream) throws IOException { objectOutputStream.defaultWriteObject(); objectOutputStream.writeInt(keySet().size()); Iterator it = keySet().iterator(); while (it.hasNext()) { objectOutputStream.writeObject(it.next()); } objectOutputStream.writeInt(size()); for (Map.Entry entry : entries()) { objectOutputStream.writeObject(entry.getKey()); objectOutputStream.writeObject(entry.getValue()); } } @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ Map asMap() { return super.asMap(); } @Override // com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.Multimap public void clear() { super.clear(); ValueEntry valueEntry = this.multimapHeaderEntry; succeedsInMultimap(valueEntry, valueEntry); } @Override // com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ boolean containsEntry(Object obj, Object obj2) { return super.containsEntry(obj, obj2); } @Override // com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ boolean containsKey(Object obj) { return super.containsKey(obj); } @Override // com.google.common.collect.AbstractMultimap public /* bridge */ /* synthetic */ boolean containsValue(Object obj) { return super.containsValue(obj); } @Override // com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.AbstractMultimap Iterator> entryIterator() { return new Iterator>() { // from class: com.google.common.collect.LinkedHashMultimap.1 ValueEntry a; ValueEntry b; { this.a = LinkedHashMultimap.this.multimapHeaderEntry.h; } @Override // java.util.Iterator public boolean hasNext() { return this.a != LinkedHashMultimap.this.multimapHeaderEntry; } @Override // java.util.Iterator public void remove() { CollectPreconditions.a(this.b != null); LinkedHashMultimap.this.remove(this.b.getKey(), this.b.getValue()); this.b = null; } @Override // java.util.Iterator public Map.Entry next() { if (!hasNext()) { throw new NoSuchElementException(); } ValueEntry valueEntry = this.a; this.b = valueEntry; this.a = valueEntry.h; return valueEntry; } }; } @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMultimap public /* bridge */ /* synthetic */ boolean equals(Object obj) { return super.equals(obj); } /* JADX WARN: Multi-variable type inference failed */ @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ Set get(Object obj) { return super.get((LinkedHashMultimap) obj); } @Override // com.google.common.collect.AbstractMultimap public /* bridge */ /* synthetic */ int hashCode() { return super.hashCode(); } @Override // com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ boolean isEmpty() { return super.isEmpty(); } @Override // com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public Set keySet() { return super.keySet(); } @Override // com.google.common.collect.AbstractMultimap public /* bridge */ /* synthetic */ Multiset keys() { return super.keys(); } /* JADX WARN: Multi-variable type inference failed */ @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ boolean put(Object obj, Object obj2) { return super.put(obj, obj2); } @Override // com.google.common.collect.AbstractMultimap public /* bridge */ /* synthetic */ boolean putAll(Multimap multimap) { return super.putAll(multimap); } @Override // com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ boolean remove(Object obj, Object obj2) { return super.remove(obj, obj2); } @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ Set removeAll(Object obj) { return super.removeAll(obj); } /* JADX WARN: Multi-variable type inference failed */ @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.AbstractMultimap public /* bridge */ /* synthetic */ Collection replaceValues(Object obj, Iterable iterable) { return replaceValues((LinkedHashMultimap) obj, iterable); } @Override // com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ int size() { return super.size(); } @Override // com.google.common.collect.AbstractMultimap public /* bridge */ /* synthetic */ String toString() { return super.toString(); } @Override // com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.AbstractMultimap Iterator valueIterator() { return Maps.b(entryIterator()); } @Override // com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.AbstractMultimap public Collection values() { return super.values(); } public static LinkedHashMultimap create(int i, int i2) { return new LinkedHashMultimap<>(Maps.a(i), Maps.a(i2)); } /* JADX INFO: Access modifiers changed from: package-private */ @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMapBasedMultimap public Set createCollection() { return new LinkedHashSet(this.valueSetCapacity); } @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public Set> entries() { return super.entries(); } /* JADX WARN: Multi-variable type inference failed */ @Override // com.google.common.collect.AbstractMultimap, com.google.common.collect.Multimap public /* bridge */ /* synthetic */ boolean putAll(Object obj, Iterable iterable) { return super.putAll(obj, iterable); } @Override // com.google.common.collect.AbstractSetMultimap, com.google.common.collect.AbstractMapBasedMultimap, com.google.common.collect.AbstractMultimap public Set replaceValues(K k, Iterable iterable) { return super.replaceValues((LinkedHashMultimap) k, (Iterable) iterable); } @Override // com.google.common.collect.AbstractMapBasedMultimap Collection createCollection(K k) { return new ValueSet(k, this.valueSetCapacity); } public static LinkedHashMultimap create(Multimap multimap) { LinkedHashMultimap create = create(multimap.keySet().size(), 2); create.putAll(multimap); return create; } }