package doser.general;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public final class HelpfulMethods {
/**
* Sorts a Map by value
*
* Partially buggy due to
* http://stackoverflow.com/questions/109383/how-to-sort
* -a-mapkey-value-on-the-values-in-java/1283722#1283722
*
* @param map
* @return SortedMap by Value
*/
@Deprecated
public static <K, V extends Comparable<? super V>> List<Map.Entry<K, V>> sortByValue(
final Map<K, V> map) {
final List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(
map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
@Override
public int compare(final Map.Entry<K, V> op1,
final Map.Entry<K, V> op2) {
return (op2.getValue()).compareTo(op1.getValue());
}
});
return list;
}
/**
* Correct Map Sorting with Guava
*
*/
// public static <K, V extends Comparable<? super V>> List<Map.Entry<K, V>> sortByValueGuava(
// Map<K, V> map) {
// // final List<K> sortedKeys =
// // Ordering.natural().onResultOf(Functions.forMap(map)).immutableSortedCopy(map.keySet());
//
// Comparator<Map.Entry<K, V>> byMapValues = new Ordering<Map.Entry<K, V>>() {
// @Override
// public int compare(Map.Entry<K, V> left, Map.Entry<K, V> right) {
// return left.getValue().compareTo(right.getValue());
// }
// };
//
// List<Map.Entry<K, V>> entryList = Lists.newArrayList(map.entrySet());
// Collections.sort(entryList, byMapValues);
// return entryList;
// }
}