为什么TreeSet.contains()不起作用? [英] Why doesn't TreeSet.contains() work?
本文介绍了为什么TreeSet.contains()不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public class Empty {
public static void main( String[] args ) {
TreeSet<Class> classes = new TreeSet<Class>();
classes.add( String.class );
String test = new String();
try{
if( classes.contains(test.getClass()) ){
System.out.println( "contains" );
}
}catch(ClassCastException cce){
System.out.println( "Expected: " + classes );
System.out.println( "But it was: " + test.getClass() );
}
}
}
为什么会抛出 ClassCastException
?
推荐答案
实例化 TreeSet时
没有显式比较器,它期望插入的元素实现 Comparable
,但是 Class
不能实现
When instantiating TreeSet
without an explicit comparator, it expects inserted elements to implement Comparable
, but Class
does not implement this interface.
要修复,请创建 Class
的比较器:
To fix, create a comparator for Class
:
Comparator<Class> classComp = new Comparator<Class>()
{
@Override
public int compare(Class o1, Class o2)
{
return o1.getName().compareTo(o2.getName());
}
};
TreeSet<Class> classes = new TreeSet<Class>(classComp);
这篇关于为什么TreeSet.contains()不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文