45 lines
1.3 KiB
Java
45 lines
1.3 KiB
Java
package androidx.arch.core.internal;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.RestrictTo;
|
|
import androidx.arch.core.internal.SafeIterableMap;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public class FastSafeIterableMap<K, V> extends SafeIterableMap<K, V> {
|
|
private HashMap<K, SafeIterableMap.Entry<K, V>> mHashMap = new HashMap<>();
|
|
|
|
public Map.Entry<K, V> ceil(K k) {
|
|
if (contains(k)) {
|
|
return this.mHashMap.get(k).mPrevious;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public boolean contains(K k) {
|
|
return this.mHashMap.containsKey(k);
|
|
}
|
|
|
|
@Override // androidx.arch.core.internal.SafeIterableMap
|
|
public SafeIterableMap.Entry<K, V> get(K k) {
|
|
return this.mHashMap.get(k);
|
|
}
|
|
|
|
@Override // androidx.arch.core.internal.SafeIterableMap
|
|
public V putIfAbsent(@NonNull K k, @NonNull V v) {
|
|
SafeIterableMap.Entry<K, V> entry = get(k);
|
|
if (entry != null) {
|
|
return entry.mValue;
|
|
}
|
|
this.mHashMap.put(k, put(k, v));
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.arch.core.internal.SafeIterableMap
|
|
public V remove(@NonNull K k) {
|
|
V v = (V) super.remove(k);
|
|
this.mHashMap.remove(k);
|
|
return v;
|
|
}
|
|
}
|