package com.nisovin.magicspells.util;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class IntMap<T> {
private Map<T, Integer> map = new HashMap<T, Integer>();
public int put(T key, int value) {
Integer prev = map.put(key, Integer.valueOf(value));
if (prev != null) {
return prev.intValue();
} else {
return 0;
}
}
public void set(T key, int value) {
put(key, value);
}
public int get(T key) {
Integer value = map.get(key);
if (value != null) {
return value.intValue();
} else {
return 0;
}
}
public int remove(T key) {
Integer value = map.remove(key);
if (value != null) {
return value.intValue();
} else {
return 0;
}
}
public int size() {
return map.size();
}
public boolean contains(T key) {
return map.containsKey(key);
}
public boolean containsKey(T key) {
return map.containsKey(key);
}
public boolean containsValue(int value) {
return map.containsValue(Integer.valueOf(value));
}
public int increment(T key) {
return increment(key, 1);
}
public int increment(T key, int amount) {
int value = get(key) + amount;
put(key, value);
return value;
}
public int decrement(T key) {
return decrement(key, 1);
}
public int decrement(T key, int amount) {
int value = get(key) - amount;
put(key, value);
return value;
}
public int multiply(T key, int amount) {
int value = get(key) * amount;
put(key, value);
return value;
}
public Set<T> keySet() {
return map.keySet();
}
public void clear() {
map.clear();
}
public boolean isEmpty() {
return map.isEmpty();
}
public void putAll(IntMap<? extends T> otherMap) {
map.putAll(otherMap.map);
}
public void putAll(Map<? extends T, Integer> otherMap) {
map.putAll(otherMap);
}
public Map<T, Integer> getIntegerMap() {
return map;
}
public IntMap<T> clone() {
IntMap<T> newMap = new IntMap<T>();
newMap.putAll(map);
return newMap;
}
public void useTreeMap() {
Map<T, Integer> newMap = new TreeMap<T, Integer>();
newMap.putAll(map);
map.clear();
map = newMap;
}
}