Generics 为什么对具有相同模板值参数类型的comparator类型未定义TreeMap构造函数?

Generics 为什么对具有相同模板值参数类型的comparator类型未定义TreeMap构造函数?,generics,constructor,comparator,treemap,Generics,Constructor,Comparator,Treemap,我的地图的值类型是一个列表 我想按列表中第一对的左侧排序。但有一个错误说: 构造器 TreeMap(比较器) 是未定义的 这是我的密码: import java.util.TreeMap; import org.apache.commons.lang3.tuple.Pair; Map<String, List<Pair<Integer, String>>> data = new HashMap<String, List<Pair<Integ

我的地图的值类型是一个
列表

我想按列表中第一对的左侧排序。但有一个错误说:

构造器
TreeMap(比较器)
是未定义的

这是我的密码:

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);
import java.util.TreeMap;
导入org.apache.commons.lang3.tuple.Pair;
映射数据=新的HashMap();
....
比较器值比较器=新比较器(){
@凌驾
公共整数比较(列表o1,
列表(o2){
int rzt=o1.get(0.getLeft()-o2.get(0.getLeft();
返回rzt;
}  
};
TreeMap sortedByValues=新的TreeMap(valueComparator);
sortedByValues.putAll(数据);

比较器应该比较键而不是值。的构造函数具有以下签名:

public TreeMap(Comparator<? super K> comparator)

public TreeMap(Comparator该
Comparator
应比较键而不是值。的构造函数具有以下签名:

public TreeMap(Comparator<? super K> comparator)
公共树映射(比较器