0

私は使っている:

Map <BitSet,Double> Mymap=new TreeMap<>();

電話しようとすると:

Mymap.contains(someBitSetObject)

次の実行時エラーが発生します。

Exception in thread "main" java.lang.ClassCastException: java.util.BitSet cannot be cast to java.lang.Comparable
    at java.util.TreeMap.getEntry(TreeMap.java:343)
    at java.util.TreeMap.containsKey(TreeMap.java:227)

...................................

BitSet クラスには独自の equals メソッドがありますが、TreeMapそれを呼び出していません。私は立ち往生しています。MyMapにすでにキーが含まれていて、タイプのキーが必要かどうかを確認するにはどうすればよいBitSetですか?

助けてください。

ありがとう

4

1 に答える 1

4

TreeMapキーがソート可能であることに依存しています-同等であるだけではありません:

マップは、使用されるコンストラクターに応じて、キーの自然順序付けに従って、またはComparatorマップ作成時に指定された によってソートされます。

BitSet実装しませんComparable。コンストラクターにを提供するか、別の種類のマップを使用する必要があります。ソート順を気にしない場合は、またはを使用します。ソート順が気になる場合は、自分でその順序を指定する必要があります。Comparator<BitSet>TreeMapHashMapLinkedHashMap

于 2013-02-22T10:24:29.707 に答える