1

ハッシュ マップに 2 つの配列があり、timeStampArray の時間に従って averageValueArray に格納されている値を並べ替えたいと考えています。私は使用しTreeMapClassCastExceptionいますが、ArrayListは比較できないと言っています。

これは私がやっていることです:

Map<List<Date>,List<Double>> sortMap = new HashMap<List<Date>,List<Double>>();
            sortMap.put(timeStampArray, averageValueArray);

            for (Map.Entry entry : sortMap.entrySet()) {
                System.out.println("Key = " + entry.getKey());
                System.out.println(" Value = " +entry.getValue());

            }
            System.out.println("Unsort Map......");
            printMap(sortMap);

            System.out.println("Sorted Map......");
            TreeMap<List<Date>,List<Double>> treeMap = new TreeMap<List<Date>,List<Double>>(sortMap);
            for (Map.Entry entry : treeMap.entrySet()) {
                System.out.println("Key = " + entry.getKey());
                System.out.println(" Value = " +entry.getValue());

            }


            printMap(treeMap);

そしてprintMapは次のとおりです。

public static void printMap(Map<List<Date>,List<Double>> map) {
for (Map.Entry entry : map.entrySet()) {
    System.out.println("Key : " + entry.getKey() + " Value : "
        + entry.getValue());}}
4

3 に答える 3

5

エラー メッセージが示すように、 は、マップ内の要素の順序付けを行うために必要なインターフェイスをArrayList実装していません。ただし、代わりにa を受け取るコンストラクターで を作成し、順序付け規則に従ってコンパレーターを実装することはできます。ComparableTreeMapTreeMapComparator

于 2013-06-03T06:39:20.367 に答える
4

のJavaドキュメントからTreeMap

赤黒木ベースの NavigableMap 実装。マップは、使用されるコンストラクターに応じて、キーの自然順序付けに従って、またはマップ作成時に提供される Comparator に従ってソートされます。

List実装していないComparableため、提供する必要がありますComparator

なぜあなたが を使用しているのか、私はまだ理解できませんList。必要なものは、TreeMap<Date, Double>

于 2013-06-03T06:40:13.723 に答える
1

ツリー マップのキーは Comparable インターフェイスを実装していないため、コンパレータを使用する必要があります。

カスタム Comparator を受け入れる TreeMap コンストラクターがあり、それをカスタム ロジックで実装できます。

于 2013-06-03T06:40:39.660 に答える