2

我的地图的值类型是 List<Pair<Integer, String>>

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

构造函数 TreeMap<String,List<Pair<Integer,String>>> (Comparator<List<Pair<Integer,String>>>) 未定义

这是我的代码:

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);
4

1 回答 1

2

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

public TreeMap(Comparator<? super K> comparator)

KKey的类型参数在哪里:Class TreeMap<K,V>

于 2013-01-10T15:58:39.930 回答