package com.getbase.android.db.loaders;
import com.google.common.collect.Lists;
import java.util.List;
class IdentityLinkedMap<K, V> {
private static class Entry<Key, Value> {
Key key;
Value value;
private Entry(Key key, Value value) {
this.key = key;
this.value = value;
}
}
private List<Entry<K, V>> entries = Lists.newLinkedList();
public synchronized V put(K key, V value) {
final int index = findIndexOf(key);
if (index == -1) {
entries.add(new Entry<>(key, value));
return null;
} else {
Entry<K, V> entry = entries.get(index);
V oldValue = entry.value;
entry.value = value;
return oldValue;
}
}
public synchronized V remove(K keyToRemove) {
final int index = findIndexOf(keyToRemove);
if (index != -1) {
return entries.remove(index).value;
} else {
return null;
}
}
private int findIndexOf(K keyToFind) {
int i = 0;
for (Entry<K, V> entry : entries) {
if (entry.key == keyToFind) {
return i;
}
i++;
}
return -1;
}
public synchronized V get(K key) {
final int indexOf = findIndexOf(key);
if (indexOf != -1) {
return entries.get(indexOf).value;
}
return null;
}
}