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。您需要向构造函数提供 a ,或者使用不同类型的映射。如果您不关心排序顺序,请使用or 。如果您确实关心排序顺序,则需要自己进行排序。Comparator<BitSet>TreeMapHashMapLinkedHashMap

于 2013-02-22T10:24:29.707 回答