The value type of my map is a List<Pair<Integer, String>>
I want to sort it by the left side of first pair in the list. But there is an error said:
The constructor
TreeMap<String,List<Pair<Integer,String>>> (Comparator<List<Pair<Integer,String>>>)
is undefined
Here is my code:
import java.util.TreeMap;
import org.apache.commons.lang3.tuple.Pair;
Map<String, List<Pair<Integer, String>>> data = new HashMap<String, List<Pair<Integer,String>>>();
....
Comparator<List<Pair<Integer, String>>> valueComparator = new Comparator<List<Pair<Integer, String>>>() {
@Override
public int compare(List<Pair<Integer, String>> o1,
List<Pair<Integer, String>> o2) {
int rzt = o1.get(0).getLeft() - o2.get(0).getLeft();
return rzt;
}
};
TreeMap<String, List<Pair<Integer, String>>> sortedByValues = new TreeMap<String, List<Pair<Integer, String>>>(valueComparator);
sortedByValues.putAll(data);
The
Comparatorshould compare keys and not values. The constructor ofTreeMaphas the following signature:where
Kis the type parameter of the Key:Class TreeMap<K,V>