我正在使用:
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
类型的密钥?
请帮忙。
由于
答案 0 :(得分:4)
TreeMap
依赖于键可排序 - 而不仅仅是等于:
地图根据其键的自然顺序排序,或者根据地图创建时提供的
Comparator
排序,具体取决于使用的构造函数。
BitSet
未实施Comparable
。 要么您需要向Comparator<BitSet>
构造函数提供TreeMap
,或使用其他类型的地图。如果您不关心排序顺序,请使用HashMap
或LinkedHashMap
。如果您做关心排序顺序,您需要自己进行排序。