package com.constellio.data.utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
public class KeyIntMap<K> extends HashMap<K, Integer> {
public void increment(K key, int value) {
Integer currentValue = get(key);
put(key, currentValue == null ? value : currentValue + value);
}
public void increment(K key) {
increment(key, 1);
}
public void decrement(K key, int value) {
increment(key, -1 * value);
}
public void decrement(K key) {
increment(key, -1);
}
public List<Entry<K, Integer>> entriesSortedByDescValue() {
List<Entry<K, Integer>> entries = new ArrayList<>(entrySet());
Collections.sort(entries, new Comparator<Entry<K, Integer>>() {
@Override
public int compare(Entry<K, Integer> o1, Entry<K, Integer> o2) {
return -1 * o1.getValue().compareTo(o2.getValue());
}
});
return entries;
}
public List<Entry<K, Integer>> entriesSortedByAscValue() {
List<Entry<K, Integer>> entries = new ArrayList<>(entrySet());
Collections.sort(entries, new Comparator<Entry<K, Integer>>() {
@Override
public int compare(Entry<K, Integer> o1, Entry<K, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
return entries;
}
}