我有一个号码(power(2,k))
BitSet 对象,我想将它们存储在SortedSet
。我使用代码:
Set <BitSet> S= new TreeSet<>();
但是,我收到此错误:java.lang.ClassCastException: java.util.BitSet cannot be cast to java.lang.Comparable
如何实现类似的接口?或者有没有其他方法对这些类型元素进行排序BitSet
?
有两种方法可以使用TreeSet
.
- 让它包含实现的对象
Comparable
- 有一个习惯
Comparator
比较你的元素的对象TreeSet
.
既然你想拥有你的TreeSet
包含BitSet
s, and BitSet
不实施Comparable
,你需要给你的TreeSet
一个习俗Comparator
。你如何实施Comparator
你决定。
SortedSet<BitSet> s = new TreeSet<BitSet>(new CustomBitSetComparator());
s.add(bitSet1);
s.add(bitSet2);
//etc ...
比较器可能看起来像这样
class CustomBitSetComparator implements Comparator<BitSet>{
int compare(BitSet a, BitSet b) {
if(a == b){
return 0;
} else if(a == null) {
return -1;
} else if(b == null) {
return 1;
} else if(a.equals(b)) {
return 0;
} else if(a.length() > b.length()) {
return 1;
} else if(b.lenght() > a.length()) {
return -1;
} else {
for(int i = 0; i < a.length(); i++) {
if(a.get(i) != b.get(i)) {
if(a.get(i)) {
return 1;
} else {
return -1;
}
}
}
return 0;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)