package com.squareup.haha.guava.collect; import com.squareup.haha.guava.base.Joiner; import com.squareup.haha.guava.collect.Maps; import java.util.AbstractCollection; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Set; /* loaded from: classes.dex */ abstract class AbstractMultimap implements Multimap { private transient Map> asMap; private transient Collection> entries; private transient Set keySet; private transient Collection values; class Entries extends Multimaps$Entries { private Entries() { } @Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable public Iterator> iterator() { return AbstractMultimap.this.entryIterator(); } @Override // com.squareup.haha.guava.collect.Multimaps$Entries final Multimap multimap() { return AbstractMultimap.this; } /* synthetic */ Entries(AbstractMultimap abstractMultimap, byte b) { this(); } } class EntrySet extends Entries implements Set { private EntrySet(AbstractMultimap abstractMultimap) { super(abstractMultimap, (byte) 0); } @Override // java.util.Collection, java.util.Set public final boolean equals(Object obj) { return Joiner.equalsImpl(this, obj); } @Override // java.util.Collection, java.util.Set public final int hashCode() { Iterator it = iterator(); int i = 0; while (it.hasNext()) { Object next = it.next(); i = ~(~(i + (next != null ? next.hashCode() : 0))); } return i; } /* synthetic */ EntrySet(AbstractMultimap abstractMultimap, byte b) { this(abstractMultimap); } } class Values extends AbstractCollection { Values() { } @Override // java.util.AbstractCollection, java.util.Collection public final void clear() { AbstractMultimap.this.clear(); } @Override // java.util.AbstractCollection, java.util.Collection public final boolean contains(Object obj) { return AbstractMultimap.this.containsValue(obj); } @Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable public final Iterator iterator() { return AbstractMultimap.this.valueIterator(); } @Override // java.util.AbstractCollection, java.util.Collection public final int size() { return AbstractMultimap.this.size(); } } AbstractMultimap() { } @Override // com.squareup.haha.guava.collect.Multimap public Map> asMap() { Map> map = this.asMap; if (map != null) { return map; } Map> createAsMap = createAsMap(); this.asMap = createAsMap; return createAsMap; } @Override // com.squareup.haha.guava.collect.Multimap public boolean containsEntry(Object obj, Object obj2) { Collection collection = asMap().get(obj); return collection != null && collection.contains(obj2); } public boolean containsValue(Object obj) { Iterator> it = asMap().values().iterator(); while (it.hasNext()) { if (it.next().contains(obj)) { return true; } } return false; } abstract Map> createAsMap(); Set createKeySet() { return new Maps.KeySet(asMap()); } public Collection> entries() { Collection> collection = this.entries; if (collection == null) { byte b = 0; collection = this instanceof SetMultimap ? new EntrySet(this, b) : new Entries(this, b); this.entries = collection; } return collection; } abstract Iterator> entryIterator(); public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof Multimap) { return asMap().equals(((Multimap) obj).asMap()); } return false; } public int hashCode() { return asMap().hashCode(); } public Set keySet() { Set set = this.keySet; if (set != null) { return set; } Set createKeySet = createKeySet(); this.keySet = createKeySet; return createKeySet; } @Override // com.squareup.haha.guava.collect.Multimap public boolean put(K k, V v) { return get(k).add(v); } @Override // com.squareup.haha.guava.collect.Multimap public boolean remove(Object obj, Object obj2) { Collection collection = asMap().get(obj); return collection != null && collection.remove(obj2); } public String toString() { return asMap().toString(); } Iterator valueIterator() { return Maps.valueIterator(entries().iterator()); } @Override // com.squareup.haha.guava.collect.Multimap public Collection values() { Collection collection = this.values; if (collection != null) { return collection; } Values values = new Values(); this.values = values; return values; } }