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)

キーのKタイプパラメータは次のとおりです。Class TreeMap<K,V>

于 2013-01-10T15:58:39.930 に答える